2010-04-24 19 views
37

Il codice seguente intende abilitare il pulsante di invio una volta che l'utente fa clic nel campo textarea. Funziona, ma sto cercando di farlo in modo che sia abilitato solo se c'è almeno un personaggio nel campo. Ho provato a confezionarlo in:jquery - controlla la lunghezza del campo di input?

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

} 

Ma, quello non sembra funzionare ... Qualche idea?

$("#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 significa OLTRE 1. Se si desidera ALMENO 1, si dovrebbe usare> = Inoltre, perché stai usando una tale sintassi selettore di strano per la selezione sulla base di ID ? Perché non utilizzare la sintassi $ ('# ID')? –

+0

Sono venuto qui cercando la lunghezza del valore jquery e ho pensato che valeva la pena notare che non è più necessario ricorrere all'impostazione del valore per ottenere un testo predefinito, l'attributo segnaposto fa questo lavoro ora (html5) che significa che il valore non è impostato in modo da poter semplicemente controllare value! == 0. – Chris

risposta

82

che non funziona perché, a giudicare dal resto del codice, il valore iniziale del metodo di scrittura è "text Default" - che è più di un carattere, e così la sua condizione if è sempre vero .

Il modo più semplice per farlo funzionare, mi pare, è quello di tenere conto di questo caso:

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

value.length> 0 – Ben

+1

Sì, hai ragione. Corretta la risposta –

19

Se vuoi dire che si desidera attivare l'inviare dopo che l'utente ha digitato almeno un carattere , quindi è necessario allegare un evento chiave che lo verificherà per te.

Qualcosa di simile:

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