如何在jquery中创建自定义事件

时间:2012-03-05 12:32:39

标签: jquery keyboard-events custom-events

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

有什么建议吗?感谢。

6 个答案:

答案 0 :(得分:2)

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

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

// trigger event
$('#mydiv').trigger('customevent');

答案 1 :(得分:1)

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

在这三个选项中,对于整数输入,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)

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

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

});

答案 4 :(得分:0)

我认为这会对你有帮助..

Alphanumeric Demo

答案 5 :(得分:0)

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