Jquery:如何根据属性值将按键事件绑定到输入类型“数字”[重复]

Posted

技术标签:

【中文标题】Jquery:如何根据属性值将按键事件绑定到输入类型“数字”[重复]【英文标题】:Jquery: How to bind keypress event to an input type 'number' based on attribute value [duplicate] 【发布时间】:2017-01-28 07:20:45 【问题描述】:

我只想在输入字段为number 类型且对应属性validate 的值为checkit 时执行验证。我不确定我应该通过什么来代替 astrix 将其绑定到下面代码中提到的按键事件$('*** input[type=number]').bind。我被困在这里,感谢您提供这方面的任何帮助。

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

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

【问题讨论】:

$('input[type=number][validate="checkit"]').bind('keypress'..... 此解决方案不起作用,因为问题不是选择器,而是您选择元素的时间。您应该使用“on”来列出动态变化的属性。 $('form').on('keypress',''input[type=number][validate="checkit"]'', function(e)); @cezarypiatek 感谢您的 cmets 和 .bind 不适用于与相同选择器匹配的动态添加的元素...elijahmanor.com/… 这里它说“.on 方法带来了很多一致性API 并希望让事情变得不那么混乱。” 【参考方案1】:

试试这个:

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

【讨论】:

根据本站elijahmanor.com/… 使用 .on 更好 ....$('input[type=number][validate=checkit]').on('keypress', function(e ) //在这里做事 ); 是的,我知道,我复制了你的代码。【参考方案2】:

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

$('input[type="number"]').bind('keypress', function(e) 
    if($(this).prop('validate') == 'checkit')
    
       // do here
    
);

或者您可以为您的input[type='number'] 分配一个类,例如.input-num,然后像这样创建一个事件侦听器:

 $('.input-num[validate="checkit"]').bind('keypress', function(e) 
        // do things here
    );

第一个解决方案会根据输入的数量(如果输入太多)添加内存开销,因为所有输入都会附加一个事件,但代码会根据我们刚刚添加的条件排除输入.

不过,第二种解决方案在性能和内存方面更好,但它需要您向 input[type="number"] 添加类,这会增加一些时间开销

【讨论】:

我已经更新了答案。

以上是关于Jquery:如何根据属性值将按键事件绑定到输入类型“数字”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据值将 css 类添加到选择列表选项中 - 使用 jQuery

如何按值将变量传递给匿名javascript函数?

如何将事件处理程序绑定到 jQuery 中的实例?

如何在按键事件后获取 jQuery .val()?

在页面加载时触发/绑定文本框的 jquery 事件

在knockoutjs上绑定按键事件,未填充可观察到