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();
})
This is working fine, but in my function I want to do something based on the text value in the textbox
var textValue = ("input[x]").val();
Now the problem here is that it lags behind by a key so if my text box says 'He' and I type an 'l', then I want my textValue to be 'Hel', but it is returning the previous value 'He' because presumably the character hasn't been put in the text box yet.
Is there a way of getting 'Hel' out of my function here?
Thanks :)
You can try to use the keyup event:
Use setTimeout without a delay. It will run immediately after keypress event completes so you'll have the correct value of the input.
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:
Use
onkeyup
, it will show the right value.