L'evento jquery keypress () ottiene il testo
Domanda
Voglio che una funzione venga eseguita quando si preme un tasto su una casella di testo, quindi ho questo codice:
$("input[x]").keypress(function() {
DoX();
})
Funziona benissimo, ma nella mia funzione voglio fare qualcosa in base al valore del testo nella casella di testo
var textValue = ("input[x]").val();
Ora il problema qui è che è in ritardo di una chiave, quindi se la mia casella di testo dice 'Lui' e io digito una 'l', allora voglio che il mio textValue sia 'Hel', ma sta restituendo il valore precedente "Lui" perché presumibilmente il personaggio non è stato ancora inserito nella casella di testo.
Esiste un modo per far uscire 'Hel' dalla mia funzione qui?
Grazie :)
Soluzione
Puoi provare a usare l'evento keyup:
$(selector).keyup(function() {
var textValue = $(this).val();
DoX();
});
Altri suggerimenti
se sei bloccato usando il tasto premuto per qualche altro motivo (quindi non puoi passare al keyup come suggerito) allora puoi ottenere l'ultimo carattere digitato in questo modo:
$("input[x]").keypress(function (e) {
var c = String.fromCharCode(e.which);
//process the single character or
var textValue = $("input[x]").val();
var fulltext = textValue + c;
//process the full text
});
Usa onkeyup
, mostrerà il valore giusto.
Usa setTimeout senza indugio. Verrà eseguito immediatamente dopo il completamento dell'evento keypress, quindi avrai il valore corretto dell'input.
$("input[x]").keypress(function() {
setTimeout(DoX);
});