0

我想创建一个自定义事件,只要在 input 中输入数值就会触发该事件type="text"。字母应该被忽略。事件对我来说效果不佳changeblur

有什么建议么?谢谢。

4

6 回答 6

2

您可以轻松创建自定义事件:

// handle event
$('#mydiv').on('customevent', function(e) { });

// trigger event
$('#mydiv').trigger('customevent');
于 2012-03-05T12:55:55.480 回答
1

您正在寻找keydown,keypresskeyup事件来捕获输入并拒绝非数字输入。

在这三个选项中,对于整数输入,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来处理来自复制粘贴/拖动的输入。

于 2012-03-05T12:34:00.707 回答
1
$( '#input-id' ).keyup(function(e)
    {
        if (e.keyCode >= 48 && e.keyCode <= 57 )
        {
            doThis();
        }
    });
于 2012-03-05T12:36:51.517 回答
1

您可能仍然可以使用changeblur事件,但插入一些额外的逻辑来检测您的输入是否是您想要触发事件的东西,所以

$(".field").on("change blur keydown keyup", function(){
    if($(this).val().match(/^\d+$/){
      //your code
    } else {
      //do nothing
    }

});
于 2012-03-05T12:39:04.397 回答
0

我想这会对你有所帮助..

字母数字演示

于 2012-03-05T12:37:05.957 回答
0

好的文章在这里..http://javascript.mfields.org/2011/creating-custom-events-with-jquery/ 但我认为它不需要。您可以按照 Rob 的建议使用 keydown、keypress 或 keyup。

于 2012-03-05T12:37:09.520 回答