Heim > Web-Frontend > js-Tutorial > Warum schlägt das Ändern eines Eingabefeldtyps von Passwort in Text mit jQuery fehl?

Warum schlägt das Ändern eines Eingabefeldtyps von Passwort in Text mit jQuery fehl?

Linda Hamilton
Freigeben: 2024-11-20 04:04:02
Original
206 Leute haben es durchsucht

Why Does Changing an Input Field Type From Password to Text With jQuery Fail?

jQuery: Eingabefeldtyp ändern

In diesem Szenario wird versucht, das Typattribut eines Eingabefelds mithilfe von jQuery von Passwort in Text zu ändern . Der Versuch erweist sich jedoch als erfolglos.

Der bereitgestellte Code bei der Ausführung:

$(document).ready(function() {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// #login-box password field
$('#password').attr('type', 'text');
$('#password').val('Password');
Nach dem Login kopieren

});

zielt darauf ab, das #password-Feld mit dem als „password“ bezeichneten Typattribut anzusprechen und wandeln Sie es in ein Standardtextfeld um. Anschließend soll das geänderte Feld mit dem Text „Passwort“ gefüllt werden.

Trotz der Existenz des Codes bleibt das gewünschte Ergebnis jedoch aus. Warum?

Der Kern des Problems liegt in Sicherheitsbedenken hinsichtlich der Funktionalität des Browsers. Das Ändern des Typs eines Eingabefelds, insbesondere von einem sicheren Typ wie einem Passwort zu einem regulären, löst Sicherheitsmaßnahmen aus, die vom Browser implementiert werden. Dies wird häufig bei Browsern wie Safari beobachtet.

Um dieses Dilemma zu lösen, ist eine Problemumgehung mit dem bloßen DOM (Document Object Model) ratsam:

<br>var pass = document.createElement('input');<br>pass.type = 'password';<br>document.body.appendChild(pass);<br>pass.type = 'text';<br>pass.value = 'Password';<br>

Dieser Ansatz umgeht die Einschränkungen von jQuery und erzielt gleichzeitig das gewünschte Ergebnis.

Bemerkenswert ist die direkte Änderung des Typs Attribut über jQuery stößt auf Probleme im IE. Der Quellcode von jQuery offenbart diese Einschränkung:

<br>// Wir können nicht zulassen, dass die Typeigenschaft geändert wird (da dies Probleme im IE verursacht)<br>if ( name == " Typ" && jQuery.nodeName( elem, "input" ) && elem.parentNode )</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">throw "type property can't be changed";
Nach dem Login kopieren

Wenn Sie daher versuchen, den Typ eines Eingabefelds mithilfe von jQuery von Passwort in Text zu ändern und auf Schwierigkeiten stoßen, wird empfohlen, das Roh-DOM zu verwenden Verwenden Sie die oben beschriebene Methode, um alle vom Browser auferlegten Sicherheitsbeschränkungen zu umgehen.

Das obige ist der detaillierte Inhalt vonWarum schlägt das Ändern eines Eingabefeldtyps von Passwort in Text mit jQuery fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Vorheriger Artikel:„Var“ verwenden oder nicht verwenden: Sind JavaScript-Variablendeklarationen optional? Nächster Artikel:Warum schlägt ExecJS unter Windows mit „sessions.js.coffee“ fehl und wie kann es behoben werden?
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage