我想创建一个自定义事件,只要在输入type="text"
中输入数值,就会触发该事件。字母应该被忽略。 change
和blur
事件对我来说效果不佳。
有什么建议吗?感谢。
答案 0 :(得分:2)
您可以轻松创建自定义事件:
// handle event
$('#mydiv').on('customevent', function(e) { });
// trigger event
$('#mydiv').trigger('customevent');
答案 1 :(得分:1)
您正在寻找keydown
,keypress
或keyup
事件来捕获输入,并拒绝非数字输入。
在这三个选项中,对于整数输入,keypress
事件非常合适。
$('input#selector').keypress(function(event) {
if (e.which < 48 || e.which > 57) { // or:
//if (!/\d/.test(String.fromCharCode(e.which))) {
event.preventDefault();
}
});
但是,您还应该使用blur
/ change
来处理来自复制粘贴/拖动的输入。
答案 2 :(得分:1)
$( '#input-id' ).keyup(function(e)
{
if (e.keyCode >= 48 && e.keyCode <= 57 )
{
doThis();
}
});
答案 3 :(得分:1)
您可能仍然可以使用change
或blur
事件,但会插入一些额外的逻辑来检测您的输入是否是您想要触发事件的内容,所以
$(".field").on("change blur keydown keyup", function(){
if($(this).val().match(/^\d+$/){
//your code
} else {
//do nothing
}
});
答案 4 :(得分:0)
我认为这会对你有帮助..
答案 5 :(得分:0)
好文章在这里..http://javascript.mfields.org/2011/creating-custom-events-with-jquery/ 但是我觉得它不需要。你可以按照Rob的建议使用keydown,keypress或keyup。