Javascript Jquery:如何将按键事件绑定到输入类型';编号';基于属性值

Javascript Jquery:如何将按键事件绑定到输入类型';编号';基于属性值,javascript,jquery,Javascript,Jquery,我只想在输入字段为number类型且相应属性validate具有值checkit时执行验证。我不确定我应该传递什么来代替astrix将其绑定到按键事件$(“***输入[type=number]”)。下面的代码中提到了绑定。我被困在这里,在这方面的任何帮助都是感激的 <input type="number" validate="checkit"> $('input[type=number]').bind('keypress', function(e) { //do thing

我只想在输入字段为
number
类型且相应属性
validate
具有值
checkit
时执行验证。我不确定我应该传递什么来代替astrix将其绑定到按键事件
$(“***输入[type=number]”)。下面的代码中提到了绑定。我被困在这里,在这方面的任何帮助都是感激的

<input type="number" validate="checkit">

$('input[type=number]').bind('keypress', function(e) {
    //do things here
});

$('input[type=number]')。绑定('keypress',函数(e){
//在这里做事
});

您可以在事件处理程序中添加一个条件,使 代码如下:

$('input[type="number"]').bind('keypress', function(e) {
    if($(this).prop('validate') == 'checkit')
    {
       // do here
    }
});
 $('.input-num[validate="checkit"]').bind('keypress', function(e) {
        // do things here
    });
或者您可以为
输入[type='number']
分配一个类,例如,
.input num
,然后创建如下事件侦听器:

$('input[type="number"]').bind('keypress', function(e) {
    if($(this).prop('validate') == 'checkit')
    {
       // do here
    }
});
 $('.input-num[validate="checkit"]').bind('keypress', function(e) {
        // do things here
    });
第一种解决方案根据输入的数量(如果输入太多)增加内存开销,因为事件附加到所有输入,但代码根据我们刚才添加的条件排除输入

尽管第二种解决方案在性能和内存方面更好,但它要求您向输入[type=“number”]添加类,这会增加一些时间开销

尝试以下方法:

$('input[type=number][validate=checkit]').bind('keypress', function(e) {
    //do things here
});

$('input[type=number][validate=“checkit”]')。bind('keypress'……
此解决方案不起作用,因为问题不是选择器,而是选择元素的时间。您应该使用'on'来列出动态更改的属性。$('form')。on('keypress','input[type=number][validate=“checkit”'',函数(e){});@CezaryPatek感谢您的评论,.bind不适用于动态添加的与同一选择器匹配的元素…这里它说“the.on方法为API带来了很多一致性,希望能让事情稍微不那么混乱。”我已经更新了答案。根据此网站,使用.on更好……('input[type=number][validate=checkit]')。在('keypress',函数(e){//do things here})上;是的,我知道,我复制了你的代码。