11
votes

Modification de l'attribut "Type" du texte au mot de passe

Pourquoi la jQuery ne change pas l'attribut type de #password_input au mot de passe? XXX


0 commentaires

15 Réponses :


11
votes

Propriété / attribut de type 'ne peut pas être modifié.

Edit: C'était précis pour JQuery au moment de son affectation. Voir d'autres réponses pour comment cela peut être fait maintenant.


4 commentaires

Regardez des rapports de bogues sur api.jquery.com/attr pour voir que vous n'êtes pas seul. Firebug vous dira même que «la propriété ne peut pas être changée».


Je ne suis pas sûr de savoir pourquoi cela continue à avoir voté ... Quiconque se souciait d'expliquer pourquoi je continue à obtenir des bowvotes?


Parce que les gens sont confondus entre JQuery et JavaScript. Peut-être que vous pouvez éditer votre réponse pour refléter cela?


@Candidj a lu le message. En 2011, JQuery n'avait pas cette capacité.



4
votes

Vous ne pouvez pas changer l'attribut type. Vous devez créer un nouvel élément et supprimer l'ancien comme celui-ci:

var originalBtn = $("#password_input");
var newBtn = originalBtn.clone();

newBtn.attr("type", "password");
newBtn.insertBefore(originalBtn);
originalBtn.remove();
newBtn.attr("id", "password_input");


0 commentaires

8
votes

Il s'agit d'une mesure de sécurité que la plupart des grands navigateurs utilisent pour atténuer le vol d'écran et le vol de mots de passe (il est plus important d'aller dans l'autre sens, du mot de passe code> à code> sur code>).

Je ne peux pas dire à votre code ce que vous essayez de faire, mais voici ma supposition: vous voulez une zone de texte avec le mot mot de passe code> en tant que indice, et quand il se concentre , l'utilisateur entre dans son mot de passe comme champ de mot de passe. Pour y accomplir, vous pouvez utiliser deux éléments: un code> et un code>, ce dernier caché initialement. Lorsque l'utilisateur se concentre sur la zone de texte, cochez-vous simplement le champ Mot de passe et définissez la mise au point. Il pourrait devenir délicat de basculer entre eux. P>

Mise à jour h3>

Ceci est maintenant plus facile à accomplir dans les navigateurs modernes. Utilisez simplement quelque chose comme ceci (voici un jsfiddle ): p>

<input type="password" placeholder="Password" />


2 commentaires

oui c'est exactement ce que je vais pour ... mais cela jeta un poubelle ce que je pensais être assez simple


@Andrewferrara vérifier ma réponse mise à jour de la solution de flou de focus



2
votes

Ceci le fera

$('#clear').focus(function() {
    $('#clear').hide();
    $('#password_input').show().focus();
});
$('#password_input').blur(function() {
    if ($('#password_input').val() == '') {
        $('#clear, #password_input').toggle();
    }
});


0 commentaires

1
votes
<span>Password:</span>
<input type="text" id="pwd" style="width: 180px; color: Gray;" onfocus="Changetxt();this.type='password'" onblur="if(this.value==''){this.type='text';textboxtype();}" value="Enter Your Password Here" />

 <script>

        function Changetxt() {
            if ($('#pwd').val() == "Enter Your Password Here") {
                $('#pwd').val('');
                $('#pwd').css('color', 'black');
            }
        }

        function textboxtype() {
            if ($('#pwd').val().length < 1) {
                $('#pwd').val('Enter Your Password Here');
                $('#pwd').css('color', 'gray');
            }
        }

    </script>

0 commentaires

-1
votes

Les réponses ci-dessus sont partiellement erronées lorsqu'elles stiportent l'attribut type ne peut pas être modifiée. Oui, cela peut être changé via la méthode Prop / ATTR JQUERY. La chose est, elle est soutenue par tous les navigateurs mais c'est-à-dire


0 commentaires

25
votes

oui u peut.

Essayez ceci Ses travaux P>

<input type="text" class="pwd">
  $('.pwd').click(function(){
  $(this).get(0).type='password';
});


7 commentaires

Travaillé en chrome comme un charme. Merci.


Homme, c'était mon "Oh, j'ai appris quelque chose aujourd'hui" moment pour aujourd'hui. Merci beaucoup!


Impressionnant! Fonctionne comme un charme.


Nice, mais cela peut-il être accompli sans jQuery?


BTW, est dit qu'il ne fonctionne pas avec IE7 et IE8. Quoi qu'il en soit, travaillé dans le chrome pour moi.


Comment ça se passe (0) de ce travail? Pour moi, cela fonctionne sur la page où prévu, mais provoque des effets secondaires morts sur d'autres pages.


$ (this) .get (0) dans ce contexte est inutile. Il rend un objet JavaScript normal dans un objet JQuery puis obtient l'objet normal tout droit. Il suffit d'utiliser ceci.type = 'mot de passe' à la place.



5
votes

Vous pouvez toujours utiliser le pure JS comme: xxx


2 commentaires

ça peut! Je le fais tout le temps avec JavaScript.


parce que la question est sur jQuery et non javascript



0
votes

Peut avoir besoin d'afficher des informations de texte dans le champ Mot de passe apporté sur l'image, définie sur l'arrière-plan du champ de mot de passe et supprimé lorsque l'image de fond de la mise au point sur le champ de mot de passe, de manière à obtenir l'effet d'inviter l'utilisateur < / p>


0 commentaires

0
votes

J'ai rencontré un défi similaire récemment et je voudrais évaluer mon opinion. J'ai utilisé certaines des solutions ci-dessus et d'autres utilisateurs de JQuery (que j'aime beaucoup). Mais lorsque l'heure du test est venue, nous réalisons que les solutions via JQuery et ATT () ne fonctionne pas. Donc, je trouve la solution appropriée par pure JavaScript. xxx

et le opposé xxx


0 commentaires

2
votes

Avez-vous essayé d'utiliser. xxx

http: // API .jquery.com / Prop /


1 commentaires

Cela a fonctionné pour moi (pour changer le type de caché à initial ). Merci!



1
votes

Créez simplement 2 champs d'entrée de synchronisation. Un comme mot de passe et un comme texte. Puis commuter leur visibilité via le bouton. N'oubliez pas de masquer l'entrée de texte au début.

// sync input fields
$('#inp_passwd').keyup(function(){
    $('#inp_passwd2').val($(this).val());
});
// show clear password
$('#btn_show_passwd').mousedown(function(){
    $('#inp_passwd').hide();
    $('#inp_passwd2').show();
});
// hide clear password
$('#btn_show_passwd').mouseup(function(){
    $('#inp_passwd').show();
    $('#inp_passwd2').hide();
});
// hide hidden text-field on start
$('#btn_show_passwd').mouseup();


2 commentaires

C'est une solution vraiment élégante. J'aime l'utilisation de la souris haut / bas au lieu d'une bascule.


Ne fonctionnera pas si vous prévoyez de soumettre le formulaire. Le nom de champ devrait être identique et la forme ne choisira qu'une valeur de la première ou de la dernière entrée.



0
votes

Toutes les solutions ici n'ont pas fonctionné pour moi (version chromée 51.0.2704.103 m (64 bits)). L'a-t-il comme ça et cela fonctionne:

jQuery(function() {
    setTimeout(function(){
        jQuery('.pwForm').attr('type','password');
    }, 1);
});


0 commentaires

0
votes

Utilisez ce code:

<input type="text" id="password_input" name="password" />
<script>
$("#password_input").click(function(){
    $(this).prop('type', 'date');
});
</script>


0 commentaires

0
votes

Pour changer la valeur d'attribut de type, il suffit de mettre à jour votre jQuery.

Voir l'exemple ci-dessous. P>

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

  <div id="loginBox">
    <form>
      <input type="text" id="username_input" name="username" /><br />
      <input type="text" id="password_input" name="password" />
    </form>
  </div>
  <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
  <script type="text/javascript">
    $(document).ready(function() {
      $("#password_input").attr('type','password');
    });
  </script>
</body>
</html>


0 commentaires