2017-06-16 2 views
0

J'ai un élément de formulaire que je voudrais basculer la valeur entre 1 et 0, sur un événement de clic.jQuery - el.val (! E.val()) renvoie false

Je sais que je peux stocker cette valeur et la tester, pour déterminer la nouvelle valeur pour le champ.

Ma question est cependant, pourquoi ne pas ce qui suit?

$('#myEl').val(!$('#myEl').val()); 
+0

Pouvez-vous poster le reste du code? – BravoZulu

Répondre

3

val() renvoie une chaîne et ! renvoie une valeur booléenne convertie en chaîne (par val(...)) devient "false".

convertir la chaîne à la place numéro et le booléen au numéro, en utilisant le unaire + deux fois:

$("#toggle").click(function() { 
 
    $('#myEl').val(+!+$('#myEl').val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="myEl" value="1"> 
 
<button id="toggle">Toggle</button>

0

Parce que #myEl a une valeur, en faisant $('#myEl').val(!$('#myEl').val()); vous définissez #myEl comme faux.