I want a function to be run when a keypress occurs on a text box, so I have this code:
$(\"input[x]\").keypress(function() {
DoX();
})
Use onkeyup
, it will show the right value.
You can try to use the keyup event:
$(selector).keyup(function() {
var textValue = $(this).val();
DoX();
});
if you are stuck using the keypressed for some other reason (so you cannot change to keyup as suggested) then you can get the last character typed like this:
$("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
});
Use setTimeout without a delay. It will run immediately after keypress event completes so you'll have the correct value of the input.
$("input[x]").keypress(function() {
setTimeout(DoX);
});