我想创建一个自定义事件,只要在 input 中输入数值就会触发该事件type="text"
。字母应该被忽略。事件对我来说效果不佳change
。blur
有什么建议么?谢谢。
我想创建一个自定义事件,只要在 input 中输入数值就会触发该事件type="text"
。字母应该被忽略。事件对我来说效果不佳change
。blur
有什么建议么?谢谢。
您可以轻松创建自定义事件:
// handle event
$('#mydiv').on('customevent', function(e) { });
// trigger event
$('#mydiv').trigger('customevent');
您正在寻找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
来处理来自复制粘贴/拖动的输入。
$( '#input-id' ).keyup(function(e)
{
if (e.keyCode >= 48 && e.keyCode <= 57 )
{
doThis();
}
});
您可能仍然可以使用change
或blur
事件,但插入一些额外的逻辑来检测您的输入是否是您想要触发事件的东西,所以
$(".field").on("change blur keydown keyup", function(){
if($(this).val().match(/^\d+$/){
//your code
} else {
//do nothing
}
});
我想这会对你有所帮助..
好的文章在这里..http://javascript.mfields.org/2011/creating-custom-events-with-jquery/ 但我认为它不需要。您可以按照 Rob 的建议使用 keydown、keypress 或 keyup。