添加另一个类后,jQuery不再为每个类找到dom

时间:2016-08-31 09:09:35

标签: javascript jquery

我对仅应包含数字的文本字段使用客户端验证。 我只需将自定义类 only-digits 添加到特定模型字段:

TextBoxFor(m => m.Customer.PhoneNumber, new { @class = "k-textbox only-digits" })

..并在方法中处理用户输入:

$(".only-digits").keydown(function (e) {...}

这样可以正常工作,但如果服务器回发了无效的表单,则.keydown事件不会再触发。 我认为这是由现在添加的验证错误类引起的。 dom元素风格现在是:

input-validation-error k-textbox only-digits

为什么$(".only-digits")显然不再有效?

THX

2 个答案:

答案 0 :(得分:2)

我怀疑这是一个事件委托问题。要解决这个问题,您需要将事件绑定到最近的静态父级,并使用jQuery的on()函数,如下所示:

$('body').on('keydown', '.only-digits', function(e) {  
    // Whatever code you need to run in your handler.
});

请注意,使用委派的事件处理程序使body(或document)变得混乱通常是不好的做法。您需要确定所有.only-digits元素中最接近的静态父级。

答案 1 :(得分:0)

如果要使用使用脚本创建的任何选择器,则应使用delegate方法。 delegate功能可以像下面这样使用

$(document).on("keydown", ".only-digits", function(e){
    //your code goes here
})