【问题标题】:onkeyup and onfocusout is not working in jQuery Validateonkeyup 和 onfocusout 在 jQuery Validate 中不起作用
【发布时间】:2014-09-11 20:54:31
【问题描述】:

我正在使用 jQuery Validate 插件进行验证。我必须对表单进行实时验证。 例如,如果需要名字,那么用户应该第一次收到所需的消息,并在他开始在文本框中输入时离开。

为了实现这个功能,我在插件的onkeyuponfocusout 选项上使用。 为此,我推荐 this link 有同样问题的人。

这是我的 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 下添加了警报消息,但没有弹出任何内容,也没有应用实时验证。

有什么我想念的吗? 这是我的html

<input type="text" value="as as" size="50" placeholder="Full Name" name="view[name]" id="customerName" class="string required wide" style="font-size: 20.4572px; line-height: 49px;">

那么我该如何解决这个问题。

【问题讨论】:

  • "not working fine" 究竟是什么意思? onkeyuponfocusout 选项已默认启用,无需在 .validate() 中指定,除非您出于某种原因想要覆盖它们。
  • 我已经更新了我的帖子,我需要第一次显示消息。
  • 您不会在.validate() 方法中使用.valid() 方法。参考onkeyuponfocusout的源码。使用this.element(element) 而不是$(element).valid()
  • 再说一次,没有人知道“无法正常工作” 应该是什么意思。请相应地编辑您的 OP。
  • @Sparky 我更新了我的帖子

标签: jquery coffeescript jquery-validate


【解决方案1】:

您永远不会在.validate() 方法中使用.valid() 方法。参考onkeyuponfocusout的源码看看是怎么做的。

使用this.element(element) 而不是$(element).valid()

要覆盖onkeyuponfocusout 的默认功能(“延迟验证”)并改用“急切”验证...

$('#myform').validate({
    onkeyup: function(element) {
        this.element(element);  // <- "eager validation"
    },
    onfocusout: function(element) {
        this.element(element);  // <- "eager validation"
    }
    ....

演示:http://jsfiddle.net/ajy5j8jq/

【讨论】:

    猜你喜欢
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多