Heim >Web-Frontend >js-Tutorial >Warum kann ich mit jQuery den „Typ' eines Eingabefelds nicht von „Passwort' in „Text' ändern?
Typ des Eingabefelds mit jQuery ändern: Warum es möglicherweise nicht funktioniert
Beim Versuch, ein Eingabefeld von einem Passworttyp in einen zu ändern Wenn Sie mit jQuery einen Texttyp eingeben, tritt möglicherweise ein Problem auf, bei dem die Änderung nicht wirksam wird.
Hier ist der Code in Frage:
$(document).ready(function() { // #login-box password field $('#password').attr('type', 'text'); $('#password').val('Password'); });
Dieser Code zielt darauf ab, das Eingabefeld mit der ID „Passwort“ in ein Textfeld zu ändern und es dann mit dem Text „Passwort“ zu füllen. Es kann jedoch aufgrund des Sicherheitsmodells des Browsers fehlschlagen.
Beim Testen in Safari wird ein Fehler angezeigt, der darauf hinweist, dass die Typeigenschaft nicht geändert werden kann. Dies wird auch durch den jQuery-Quellcode unterstützt, der eine Prüfung enthält:
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) throw "type property can't be changed";
Diese Prüfung verhindert, dass die Type-Eigenschaft für Eingabefelder im Internet Explorer geändert wird. Es ist unklar, ob es sich hierbei um einen Fehler oder um eine Wahl des Sicherheitsdesigns handelt.
Um dieses Problem zu beheben, können Sie die native DOM-Manipulation anstelle von jQuery verwenden. So geht's:
var pass = document.createElement('input'); pass.type = 'password'; document.body.appendChild(pass); pass.type = 'text'; pass.value = 'Password';
Dieser Code ändert das Eingabefeld erfolgreich in einen Texttyp und füllt es mit dem angegebenen Wert.
Das obige ist der detaillierte Inhalt vonWarum kann ich mit jQuery den „Typ' eines Eingabefelds nicht von „Passwort' in „Text' ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!