Changer les types de champs de saisie avec jQuery : un problème revisité
Dans le but de modifier le type d'un champ de saisie de mot de passe à texte et de définir un valeur par défaut, l'extrait jQuery suivant pourrait ne pas être suffisant :
$(document).ready(function() { $('#password').attr('type', 'text'); $('#password').val('Password'); });
En y regardant de plus près, le problème vient de mesures de sécurité du navigateur, qui interdisent souvent de telles actions.
Pour illustrer cette limitation, considérons l'extrait suivant, qui crée un champ de saisie de mot de passe et tente de changer son type en texte :
var pass = document.createElement('input'); pass.type = 'password'; document.body.appendChild(pass); pass.type = 'text'; pass.value = 'Password';
Dans ce scénario, l’opération réussit sans problème. Cependant, en inspectant le code source de jQuery, nous découvrons un cas spécifique relatif à Internet Explorer :
// We can't allow the type property to be changed (since it causes problems in IE) if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) throw "type property can't be changed";
Cela suggère qu'il peut s'agir d'un bug du navigateur ou d'une fonctionnalité de sécurité délibérée dans Internet Explorer. Par conséquent, changer le type de champs de saisie via jQuery peut ne pas être une solution fiable dans tous les cas.
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!