I think you need to use an input interval because keyup is fast and the regex does not approve something like this 0.
var typingTimer; var doneTypingInterval = 1000; $('.myInputField').keyup(function(){ clearTimeout(typingTimer); if ($('.myInputField').val) { typingTimer = setTimeout(doneTyping, doneTypingInterval); } }); function doneTyping () { var vale = $('.myInputField').val(); var regexTest = /^\d+(?:\.\d\d?)?$/; var ok = regexTest.test(vale); if(!ok){ $('.myInputField').val(''); } }
http://jsfiddle.net/jWbsE/
source share