我对仅应包含数字的文本字段使用客户端验证。 我只需将自定义类 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
答案 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
})