我对只应包含数字的文本字段使用客户端验证。 我只是将自定义类 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")
显然不再起作用了?
谢谢
最佳答案
我怀疑这是一个事件委托(delegate)问题。要解决这个问题,您需要将事件绑定(bind)到最近的静态父级,并使用 jQuery 的 on()
功能如下:
$('body').on('keydown', '.only-digits', function(e) {
// Whatever code you need to run in your handler.
});
请注意,使用委托(delegate)的事件处理程序将 body
(或 document
)弄得乱七八糟通常是不好的做法。您需要确定所有 .only-digits
元素中最接近的静态父元素。
关于javascript - 添加另一个类后,jQuery 不再为每个类找到 dom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39245330/