evento di input testo HTML
Domanda
Ho una forma, e si desidera disattivare / attivare il suo pulsante di invio a seconda che i campi di testo di input del modulo sono vuote o hanno avuto il testo è entrato in loro.
Credo che questo significa avere un gestore eventi per keydown
o keypress
eventi dei campi di testo di input: quando è sparato, questo gestore di eventi deve verificare se i campi di testo di input contengono testo, e attivare o disattivare il pulsante di invio di conseguenza
L'evento change
sembra che dovrebbe essere più utile di eventi keydown
o keypress
, tranne che non è sparato fino a quando il controllo in questione perde la messa a fuoco, e che cosa buona è che: dal momento che l'utente vuole digitare solo qualcosa e quindi fare clic sul pulsante di invio, voglio un gestore di eventi che è licenziato dal testo che viene inserito e non solo quando il controllo perde lo stato attivo.
Le mie domande sono:
- Sono
keydown
e / okeypress
eventi generati prima o dopo il testo corrispondente è stato inserito nel campo di inserimento testo? - Sono
keydown
e / o eventikeypress
annullabili (si può cancellare la loro per evitare che il testo corrispondente da essere entrato)?
Modifica Cordiali saluti, il convalida jQuery plug-in modulo di re-test di validità sul tasto su.
Soluzione
In risposta alle vostre domande ...
- Il KeyDown o alla pressione di tasti eventi possono essere intercettati prima di testo immesse utilizzando JavaScript
- È possibile restituire false dopo il legame di un funzione alla pressione di un tasto o keydown evento. Questo consentirà di evitare il testo dall'essere ingresso.
Esempio utilizzando jQuery:
$("#inputfield").live("keydown", function(){
return false;
});
Se si desidera verificare alcuni input per il valore sulla forma presentare è possibile farlo utilizzando jQuery submit () .
$("#theform").submit(function() {
var formval = $("#theinput").val();
if(formval == "") { //or some better test
alert("input value"); //or some other alert...
return false;
} else {
return true;
}
});
Tornando falsa invalida il click per inviare il modulo.
Modifica Se come dici nei vostri commenti si desidera disabilitare l'invio del modulo fino a quando i requisiti sono soddisfatti per il campo di input (s)
$("#inputfield").live("keyup", function(){
if($("#inputfield").val() == "") {
$('#button').attr("disabled", true);
} else {
$('#button').attr("disabled", false);
}
});
Si desidera utilizzare il gestore di eventi " keyup " per consentire il testo da inviare primo. vedi il mio esempio: su jsbin