【问题标题】:jQuery Validate Plugin - Trigger validation of single fieldjQuery Validate Plugin - 触发单个字段的验证
【发布时间】:2011-02-13 21:35:25
【问题描述】:

我有一个可以选择通过 facebook connect 预先填充的表单。一旦用户连接,他们的姓名和电子邮件就会自动填写。问题是这不会触发远程验证来检查电子邮件是否已经存在。

有没有一种方法可以单独调用该字段的验证?比如:

$('#email-field-only').validate()

会是个好主意。没有运气搜索文档。

【问题讨论】:

    标签: javascript jquery validation jquery-validate


    【解决方案1】:

    这个方法似乎做你想做的事:

    $('#email-field-only').valid();
    

    编辑

    API 已更改,请参阅Paul's answer

    【讨论】:

    • 注意:表单元素名称也适用于此功能,即$('input[name=email-field-only]').valid();也适用
    • 有什么问题?当我使用这种方法时,我的验证会中断
    • 此解决方案验证整个表单,显示所有字段的错误消息。
    • @haemhweg,也许您在尝试使用 .valid() 之前没有调用 .validate() 方法?文档:jqueryvalidation.org/valid
    • API 已更改,请使用answer provided by Paul
    【解决方案2】:

    使用Validator.element()

    验证单个元素,如果有效则返回true,false 否则。

    这是 API 中显示的示例:

    var validator = $( "#myform" ).validate();
    validator.element( "#myselect" );
    

    .valid() 验证整个表单,正如其他人指出的那样。 API 说:

    检查选中的表单是否有效或是否全部选中 元素是有效的。

    【讨论】:

      【解决方案3】:

      由于某种原因,在字段被聚焦/模糊/更改或尝试提交之前,其他一些方法不起作用......这对我有用。

      $("#formid").data('validator').element('#element').valid();
      

      必须挖掘 jquery.validate 脚本才能找到它...

      【讨论】:

      • 这对我有用,我还在末尾添加了.valid(),所以它会找我$("#Form").data('validator').element('input[name=__Suburb]').valid();我相信如果你不按ID选择它,这可能是必需的。跨度>
      • 我认为.valid() 不属于表达式的末尾。 .element() 函数返回一个布尔结果 (docs | src)。当我尝试调用 .valid() 时,我收到错误消息:"Uncaught TypeError: $(...).data(...).element(...).valid is not a function"
      • 您是否将验证器附加到表单?自从我使用 JQuery 验证以来已经有几年了......所以这个 API 可能已经改变了。当时我不得不通过内部工作来找到上面的内容。它没有在文档中发布,因此自我上次查看以来结构很可能已经改变。
      【解决方案4】:
      $("#FormId").validate().element('#FieldId');
      

      【讨论】:

      • 我更喜欢这种方法,它是一个不错的 1 班轮。效果很好,谢谢。
      • 这是完美的答案,没有任何错误,返回类型有效
      【解决方案5】:

      如果您想验证单个表单字段,但不希望 UI 被触发并显示任何验证错误,您可以考虑使用 Validator.check() 方法,如果给定字段通过验证,则返回。

      这里是例子

      var validator = $("#form").data('validator');
      if(validator.check('#element')){
          /*field is valid*/
      }else{
          /*field is not valid (but no errors will be displayed)*/
      }
      

      【讨论】:

        【解决方案6】:

        当您设置验证时,您应该保存验证器对象。您可以使用它来验证各个字段。

        <script type="text/javascript">
        var _validator;
        $(function () {    
             _validator = $("#form").validate();   
        });
        
        function doSomething() {    
             _validator.element($('#someElement'));
        }
        </script> 
        

        -- 与this similar question交叉发布

        【讨论】:

          【解决方案7】:

          如果您想对表单上的“某些元素”(不是所有元素)进行验证。您可以使用此方法:

          $('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();
          

          希望对大家有帮助:)

          已编辑

          【讨论】:

            【解决方案8】:
            $("#element").validate().valid()
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多