Modifier le type de champ de saisie avec jQuery : pourquoi cela peut ne pas fonctionner
Lorsque vous essayez de modifier un champ de saisie d'un type de mot de passe à un tapez du texte à l'aide de jQuery, vous pouvez rencontrer un problème où la modification ne prend pas effet.
Voici le code en question :
$(document).ready(function() { // #login-box password field $('#password').attr('type', 'text'); $('#password').val('Password'); });
Ce code vise à modifier le champ de saisie avec un identifiant de "mot de passe" dans un champ de texte, puis remplissez-le avec le texte "Mot de passe". Cependant, il peut échouer en raison du modèle de sécurité du navigateur.
Les tests dans Safari affichent une erreur indiquant que la propriété type ne peut pas être modifiée. Ceci est également pris en charge par le code source de jQuery, qui contient une vérification :
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) throw "type property can't be changed";
Cette vérification empêche la modification de la propriété type pour les champs de saisie dans Internet Explorer. On ne sait pas s'il s'agit d'un bug ou d'un choix de conception de sécurité.
Pour surmonter ce problème, vous pouvez utiliser la manipulation native du DOM au lieu de jQuery. Voici comment :
var pass = document.createElement('input'); pass.type = 'password'; document.body.appendChild(pass); pass.type = 'text'; pass.value = 'Password';
Ce code réussira à modifier le champ de saisie en type de texte et à le remplir avec la valeur spécifiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!