2012-01-14 51 views
3

当输入<input type="text">字段时,我想预先检查输入的每个值,然后将其显示在屏幕上。例如。如果用户输入任何非数字值,则什么都不会发生,只有当他输入一个数值时,该字段才会改变。JQuery取消输入的文本

哪一个是正确的事件keydown(),keyup()还是有什么更好的?如何取消文本字段的当前更改,而无需记住旧值并手动重置它?

回答

3

您可以绑定到keypress事件,然后检查由事件对象的which属性表示的字符。如果它不是一个数字,你可以使用preventDefault防止书写的字符元素的默认行为:

$("#someInput").keypress(function(e) { 
    if(isNaN(String.fromCharCode(e.which))) { 
     e.preventDefault(); 
    } 
}); 

这里有一个working example