onkeyup和onfocusout在jQuery Validate中不起作用
我正在使用jQuery Validate插件进行validation。 我必须在表单上进行实时validation。 例如,如果需要名字 ,那么用户应首次获得所需的消息,并在他开始输入文本框时进入。
为了实现这个function,我正在使用插件的onkeyup
和onfocusout
选项。 为此,我引用了具有相同问题的链接 。
这是我用于表单validation的coffeescript代码
defaultPageForm: (self)-> form = $("#PageForm") if form.length > 0 form.find('textarea').on 'click', -> $(@).valid() form.find('input').on 'click', -> $(@).valid() form.validate ignore: ".ignore" rules: "view[name]": required: true NameWordCount: [3] "view[comment]": required: true CommentWordCount: [5] accept_terms: "required" messages: "view[comment]": "Please add comment" errorElement: "span" errorClass: "error_msg wide " errorPlacement: (error, element) -> element.siblings(".view_form_error_msg").remove() error.appendTo element.closest(".controls") return ###### Real time validation code ############# onkeyup: (element) -> $(element).valid() return onfocusout: (element) -> $(element).valid() return submitHandler: (form) -> self._setupData() self._submitForm(form) off return
但它没有正常工作。 例如,出于测试目的,我在onkeyup
下添加了警报消息,但没有弹出任何内容,也没有应用实时validation。
有什么我想念的吗? 这是我的HTML
那么我该如何解决这个问题呢。
永远不会在.valid()
方法中使用.valid()
.validate()
方法。 请参阅onkeyup
和onfocusout
的源代码,了解它是如何完成的。
使用this.element(element)
代替$(element).valid()
要覆盖onkeyup
和onfocusout
的默认function(“延迟validation”)并使用“急切”validation代替……
$('#myform').validate({ onkeyup: function(element) { this.element(element); // <- "eager validation" }, onfocusout: function(element) { this.element(element); // <- "eager validation" } ....
演示: http : //jsfiddle.net/ajy5j8jq/