2010-04-24 17 views
37

Le code ci-dessous est destiné à activer le bouton de soumission lorsque l'utilisateur clique dans le champ de zone de texte. Cela fonctionne, mais j'essaye de faire en sorte qu'il soit seulement activé s'il y a au moins un personnage sur le terrain. J'ai essayé d'envelopper dans:jquery - vérifier la longueur du champ de saisie?

if ($(this).val().length > 1) 
{ 

} 

Mais, cela n'a pas semblé fonctionner ... Des idées?

$("#fbss").focus(function() { 
    $(this).select(); 
    if ($(this).val() == "Default text") { 
     $(this).val(""); 
     $("input[id=fbss-submit]").removeClass(); 
     $("input[id=fbss-submit]").attr('disabled', false); 
     $("input[id= fbss-submit]").attr('class', '.enableSubmit'); 
     if ($('.charsRemaining')) { 
      $('.charsRemaining').remove(); 
      $("textarea[id=fbss]").maxlength({ 
       maxCharacters: 190, 
       status: true, 
       statusClass: 'charsRemaining', 
       statusText: 'characters left', 
       notificationClass: 'notification', 
       showAlert: false, 
       alertText: 'You have exceeded the maximum amount of characters', 
       slider: false 
      }); 

     } 
    } 
}); 
+1

> 1 signifie plus que 1. Si vous voulez AU MOINS 1, vous devez utiliser> = Aussi, pourquoi utilisez-vous une telle syntaxe de sélection impair pour la sélection basée sur ID ? Pourquoi ne pas utiliser la syntaxe $ ('# ID')? –

+0

Je suis venu ici pour chercher la valeur de jquery et j'ai pensé que ça ne valait plus la peine de recourir à la valeur pour obtenir un texte par défaut, l'attribut placeholder fait que ce travail (html5) n'a pas de valeur. value! == 0. – Chris

Répondre

82

Cela ne fonctionne pas parce que, à en juger par le reste du code, la valeur initiale de l'entrée de texte est « texte par défaut » - qui est plus d'un caractère, et donc votre if condition est toujours vrai .

La façon la plus simple de le faire fonctionner, il me semble, est de rendre compte de ce cas:

var value = $(this).val(); 
    if (value.length > 0 && value != "Default text") ... 
+4

value.length> 0 – Ben

+1

Oui, vous avez raison. Corrigé la réponse –

19

Si vous voulez dire que vous souhaitez activer le soumettre après que l'utilisateur a tapé au moins un caractère , alors vous devez attacher un événement clé qui va le vérifier pour vous.

Quelque chose comme:

$("#fbss").keypress(function() { 
    if($(this).val().length > 1) { 
     // Enable submit button 
    } else { 
     // Disable submit button 
    } 
}); 
Questions connexes