J'ai besoin d'aide pour trouver le nombre de caractères dans une balise d'entrée et créer une alerte lorsqu'il y a un certain montant. Comme s'il y en a 25, cela crée une alerte qui dit "Max". Voici le violon sur lequel il se trouve. C'est un peu ce que j'ai ...

Char.innerText = $("#input:text").val().length;

Cela fonctionne bien pour ce que je l'utilise, mais lorsque j'essaie d'utiliser Char dans une instruction if, cela ne fonctionnera pas.

0
Moox 8 mars 2016 à 23:59

5 réponses

Meilleure réponse

Ajoutez l'instruction if dans votre fonction keyup:

if ($("#input:text").val().length == 25){
        alert("Too many characters.");
    }

JSFiddle mis à jour

EDIT: Luke vient de me battre, mais il y a où le mettre dans le JSfiddle.

0
PlatinumJay 8 mars 2016 à 21:16

Puisque vous utilisez déjà l'attribut maxlength pour l'élément d'entrée, pourquoi ne pas comparer avec cette valeur plutôt que de le coder en dur dans l'instruction if.

De plus, plutôt que de le déclencher sur l'événement de frappe qui détectera également les pressions sur la touche de tabulation ou d'autres caractères de contrôle non imprimables, vous devez utiliser l'événement d'entrée.

$('#input:text').on('input', function checkLength() {
  var max = this.getAttribute('maxlength');
  if (max && this.value.length == max) {
    alert('max length reached');
  }
});
0
Besworks 8 mars 2016 à 21:39

Comme Dave l'a souligné dans les commentaires, vous devez vous assurer que vous comparez Char.innerText à une chaîne car il s'agit de texte.

Voici une instruction if valide utilisant Char.innerText:

if (Char.innerText == "25") {
  // alert
}

Alternativement, vous pouvez remplacer Char.innerText par un entier et comparer avec 25.

0
UndoingTech 8 mars 2016 à 21:21

Il s'agit d'une autre approche avec un événement et une alerte et une sortie. La limite est de cinq caractères.

function textCounter2(field, counter, maxlimit) {
    if (field.value.length > maxlimit) {
        field.value = field.value.substring(0, maxlimit);
        alert('Max!');
    } else {
        document.getElementById(counter).innerText = maxlimit - field.value.length;
    }
}
<input name="test" onkeyup="textCounter2(this, 'subtitlecount_lbl', 5)" onchange="textCounter2(this, 'subtitlecount_lbl', 5)" /><br />
<span id="subtitlecount_lbl"></span> characters left
0
Nina Scholz 8 mars 2016 à 21:27

Pourquoi ne pas utiliser ceci:

if ($("#input:text").val().length == 25) {
 alert('MAXXX');
}
0
luke 8 mars 2016 à 21:10