2009-08-20 6 views
0

J'ai une zone de texte qui doit avoir un nombre MIN de caractères ainsi qu'un nombre MAX de caractères. Quelle est la meilleure façon, en utilisant jQuery, de s'assurer que l'entrée est dans la plage (lors de l'affichage des messages d'état à l'utilisateur) avant de permettre à l'utilisateur de soumettre le formulaire?Validation de la limite de caractères de la zone de texte côté client à l'aide de jQuery?

Mise à jour: le code ci-dessous fonctionne dans une certaine mesure, mais je rencontre des problèmes lors de la suppression de texte. Comme il utilise 'keypress' pour capturer des événements dans la zone de texte, la variable 'length' est faussement incrémentée lors d'un retour arrière par exemple. Il semble que le problème est que la longueur du texte est récupérée avant le fait, c'est-à-dire qu'une pression de touche entraînera toujours une longueur de ce qui était là avant plus 1. Quelle est la bonne façon de contourner cela?

Mise à jour: (! Valider toujours sur le serveur trop) Je pense que je résolu la question précédente en utilisant la fonction keyup au lieu de keypress

Répondre

1

Si c'est la seule validation du côté client dans votre application puis » d ressembler à quelque chose comme ceci:

$("#your_textbox").keypress(function() { 
    var length = this.value.length; 
    if(length >= MIN && length <= MAX) { 
    $("#your_submit").removeAttr("disabled"); 
    $("#your_validation_div").hide(); 
    } else { 
    $("#your_submit").attr("disabled", "disabled"); 
    $("#your_validation_div").show(); 
    } 
}); 

Si vous avez besoin beaucoup de validation dans votre application, vous voudrez peut-être envisager la validation plugin.

Réglage de la maxlength attribute: fonction

<input type='text' maxlength="30" /> 
+0

le changement() semble tirer que lorsque je clique sur la zone de texte; comment puis-je obtenir ce feu après chaque nouveau personnage qui est tapé dans la zone de texte? merci – oym

+0

Utilisez plutôt la touche - Je mettrai à jour le code. –

+0

merci pour la mise à jour ... une dernière chose - une fois que la longueur est égale à MAX, comment puis-je désactiver la zone de texte afin que l'utilisateur ne peut plus saisir de caractères? Merci de votre aide! – oym

Questions connexes