2011-02-01 10 views
8

Ho un input campo:Come utilizzare jquery per convalidare un campo di input in caso di modifica?

<input type="text" name="notifyEmail" id="parametersEmail" value="" size=40 /> 

Ho un pezzo di codice jQuery che funziona quando scheda ho colpito o comunque lasciare il campo, che chiama una routine di convalida:

$("#parametersEmail").blur(function(event) { 
    validateParameterEmail(); 
}); 

quello che vorrei come fare è eseguire la funzione validateParameterEmail() ogni volta che cambia il valore o il contenuto del campo di immissione.

Così ho poi provato anche il .change() gestore:

$("#parametersEmail").change(function(event) { 
    validateParameterEmail(); 
}); 

Ma quando cambio i contenuti di parametersEmail, questo gestore non chiama la funzione di validazione.

C'è un altro gestore che dovrei usare, invece? Oppure non posso associare più gestori di eventi al campo di input?

+2

fyi ... su un campo di testo di input, .blur() e .change() sono praticamente la stessa cosa. La differenza è sfocatura = perde fuoco mentre cambia = perde fuoco + valore diverso. Il punto è che devi perdere la concentrazione su di esso in entrambi i modi. Se si desidera che la funzione venga chiamata ogni volta che un utente immette un carattere, durante l'immissione, utilizzare il .keyup o.keydown come menzionato da altri –

risposta

8

Prova $("#parametersEmail").keydown(function(event) {})

+4

o .keypress() o .keyup() –

+0

Sì! Grazie mille. –

+9

'.keydown()' sembra effettivamente sparare prima che il valore dell'ingresso sia cambiato. In altre parole, se si digita '1234', questo verrebbe convalidato su' 123'. Allo stesso modo, se si digita '1234 [cancella]', verrebbe convalidato su '1234'. '.keyup()' è probabilmente migliore per la convalida del modulo. – jonmorgan

0

Change si riferisce a quando si fa clic su via/spostare dall'ingresso. È può essere alla ricerca di onKeyUp().

6

Prova questo:

$("#parametersEmail").bind('blur', function(event) {}); 

e

$("#parametersEmail").bind('keyup', function(event) {}); 
2

(Realtà in anno quasi 2017-esimo)

Il modo migliore è quello di impostare una volta che la richiamata su tutti hanno bisogno di eventi sul cambiamento del valore di input.

ci sono:

  • keyup: utente ha digitato qualcosa in entrata
  • cambiamento: metodo comune noto cambiamenti memorizzati in ingresso
  • clic: alcuni input prendono modifiche da parte del mouse troppo
  • pasta : Sì! Ctrl + V, Ctrl + Ins, RightMouseButton + Incolla può cambiare il valore di ingresso troppo
  • PropertyChange: quando qualche JS cambia il nostro ingresso in qualsiasi modo, questo evento sarà licenziato
  • ingresso: l'evento di nuovo standard che supporta tutti i browser moderni, l'uso troppo

Quindi, possiamo impostare tutti loro una volta:

$("#parametersEmail").bind("propertychange change click keyup input paste", function(event) { 
    validateParameterEmail(); 
}); 

Spero che questo aiuti per qualcuno. ;)

Problemi correlati