Comparaison de jQuery val ()

J’essaie de comparer les valeurs de deux champs d’entrée avec jQuery. Cependant, cela semble correct, mais il n’alarme pas lorsque l’une des valeurs est plus grande.

 Enter the key:   

Plaintext:

JavaScript:

 $(document).ready(function() { // Count key $("#q17").keyup(function() { $('#charsLeft').val($(this).val().length); }); // Count plaintext $("#q18").keyup(function() { $('#charsLeft2').val($(this).val().length); }); // Compare key|plaintext if ($('#charsLeft').val() < $('#charsLeft2').val()) { alert('Key is shorter than the plaintext'); } }); 

J’essaie de comparer les valeurs des deux champs d’entrée ( charsLeft et charsLeft2 ). Qu’est-ce que j’oublie ici? Voici un violon: http://jsfiddle.net/2mgzn4pL/

Vous comparez des chaînes, pas des entiers. Vous pouvez utiliser parseInt() pour les convertir. Essaye ça:

 if (parseInt($('#charsLeft').val(), 10) < parseInt($('#charsLeft2').val(), 10)) { alert('Key is shorter than the plaintext'); } 

Violon mis à jour

.val() renvoie une chaîne. Vous devriez utiliser parseInt ou parseFloat .

Il y a deux problèmes avec votre code:

  1. Vous comparez des valeurs de chaîne avec .val() non des longueurs de chaîne
  2. Votre code de comparaison est exécuté au chargement de la page – ce qui signifie que le résultat est affiché uniquement lorsque la page est chargée. Toutefois, le résultat est faux et aucun événement n’est alerté.

Pour le premier problème, comparez les longueurs de chaîne de la manière suivante: $('#charsLeft').val().length < $('#charsLeft2').val().length .

Pour le deuxième problème, vous devez placer votre code de comparaison dans la fonction de gestionnaire d'événements de clic d'un bouton ou quelque chose de ce type. Une autre option consiste à utiliser l'événement focusout de la deuxième entrée et à associer un gestionnaire d'événements avec .focusout() .