jQuery Validate Plugin - 单个字段的触发验证

rya*_*yan 84 javascript validation jquery jquery-validate

我有一个表格,可以选择通过Facebook连接预先填充.用户连接后,会自动填写其姓名和电子邮件.问题是这不会触发远程验证以检查电子邮件是否已存在.

有没有办法可以单独调用该字段的验证?就像是:

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

会是个主意.通过文档搜索没有运气.

Gre*_*ire 143

这种方法似乎做你想要的:

$('#email-field-only').valid();
Run Code Online (Sandbox Code Playgroud)

  • 注意:表单元素名称也适用于此函数,即`$('input [name = email-field-only]').valid();`也可以 (4认同)
  • 此解决方案验证整个表单,显示所有字段的错误消息. (2认同)
  • API已更改,请使用[Paul提供的答案](/sf/answers/2250221991/) (2认同)

Tra*_*er1 20

出于某种原因,一些其他方法在该字段被聚焦/模糊/更改或尝试提交之后才能工作......这对我有用.

$("#formid").data('validator').element('#element').valid();
Run Code Online (Sandbox Code Playgroud)

不得不挖掘jquery.validate脚本来找到它...

  • 我不认为`.valid()`属于表达式的末尾。`.element()`函数返回一个布尔结果([docs](https://jqueryvalidation.org/Validator.element/)| [src](https://github.com/jquery-validation/jquery-validation /blob/1.16.0/dist/jquery.validate.js#L503))。当我尝试调用.valid()时,出现错误消息:*“未捕获的TypeError:`$(...)。data(...)。element(...)。valid`不是函数” * (2认同)

Pau*_*aul 18

用途Validator.element():

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

以下是API中显示的示例:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );
Run Code Online (Sandbox Code Playgroud)

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

检查所选表单是否有效或所有选定元素是否有效.


小智 13

$("#FormId").validate().element('#FieldId');
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这种方法,它是一个不错的1班轮.工作得很好,谢谢. (2认同)
  • 这是完美的答案,没有任何错误,返回类型有效 (2认同)

Dmi*_*min 7

如果要验证单个表单字段,但不希望触发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)*/
}
Run Code Online (Sandbox Code Playgroud)


Sha*_*ake 6

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

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

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 
Run Code Online (Sandbox Code Playgroud)

- 交叉发布这个类似的问题