La modification de la <input> tapez dans IE avec JavaScript
Ce code ci-dessous fonctionne dans tous les navigateurs sauf IE
:
<input type="text" name="passwordLogin" value="Password" onfocus="if(this.value=='Password'){this.value=''; this.type='password'};" onblur="if(this.value==''){this.value='Password'; this.type='text'};" size="25" />
Comment puis-je résoudre ce problème pour IE?
J'ai fait quelques modifications, mais il a encore une erreur.
Je veux qu'il fonctionne comme ceci, comme ici:
<input type="text" name="usernameLogin" value="Email" onfocus="if(this.value=='Email'){this.value=''};" onblur="if(this.value==''){this.value='Email'};" size="25" />
si je ne saisissez rien il va mettre la valeur de retour.
J'ai donc essayé ceci:
<td colspan="2" id="passwordLoginTd">
<input id="passwordLoginInput1" type="text" name="passwordLogin" value="Password" onfocus="passwordFocus()" size="25" />
<input id="passwordLoginInput2" style="display: none;" type="password" name="passwordLogin" value="" onblur="passwordBlur()" size="25" />
</td>
<script type="text/javascript">
//<![CDATA[
passwordElement1 = document.getElementById('passwordLoginInput1');
passwordElement2 = document.getElementById('passwordLoginInput2');
function passwordFocus() {
passwordElement1.style.display = "none";
passwordElement2.style.display = "inline";
passwordElement2.focus();
}
function passwordBlur() {
if(passwordElement2.value=='') {
passwordElement2.style.display = "none";
passwordElement1.style.display = "inline";
passwordElement1.focus();
}
}
//]]>
</script>
comme vous pouvez le voir, le flou ne fonctionne pas.
Enfin je l'ai eu, je devais enlever:
passwordElement1.focus();
OriginalL'auteur MrEnder | 2010-04-02
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas modifier dynamiquement le type d'un élément d'entrée dans Internet Explorer.
Une solution possible serait de:
Vous pouvez consulter l'article suivant pour un JavaScript à l'implantation de la ci-dessus:
Une autre option serait de statiquement créer les deux éléments, mais n'ayant qu'un seul visible à un moment donné. La visibilité et l'objectif dépendra de la valeur des éléments. Dans ce cas, vous pouvez utiliser quelque chose comme ceci:
Travaille dans IE9 et au-dessus.
OriginalL'auteur Daniel Vassallo
vous pouvez le faire. Cependant, en faisant un remplacement sur le outerhtml essentiellement déclare à nouveau l'élément, de sorte que tout attribut non défini de façon explicite dans la balise de déclaration sera oublié. C'est pourquoi la valeur du texte est enregistré dans une variable de première. À la différence de jQuery attr et prop, cela fonctionne dans toutes les versions d'IE. J'ai utilisé un réel IE10, et j'ai utilisé IETester 5,5 à 9.
Voici un violon, code ci-dessous:
HTML
JS
Cela fonctionne même sous IE 8.Pourquoi cette réponse est tellement peu d'upvotes?
INCROYABLE réponse, GRANDE mentale régime, frère. Je suis d'accord avec @JrChen, cette réponse devrait être plusieurs centaines de pouces vers le haut. J'ai ajouté ce, de sorte que vous pouvez passer avec une case à cocher "afficher/masquer le mot de passe": si(oldHtml.indexOf("\"mot de passe\"")>-1) { newHtml=oldHtml.replace("\"mot de passe\"","\"text\""); } else { newHtml=oldHtml.replace("\"text\"","\"mot de passe\""); } Merci, chiliNUT.
OriginalL'auteur chiliNUT
Troisième option consiste à modifier un nom de classe au lieu d'une valeur, et alors il suffit de changer le bg de l'image sur l'accent, à la place du type.
OriginalL'auteur Arx Poetica
Vous pouvez utiliser le code ci-dessous pour modifier le
<input>
type dans IE avec JavaScript:OriginalL'auteur user1373314