我正在使用jQuery验证插件并定义了表单验证函数,如下所示。根据一些用户操作,我正在运行自定义JS功能,在该功能中,我只想检查电子邮件和电话字段是否有效。 但是我不想验证它们,即我不想显示验证错误,我只需要检查它们的值是否有效。
像
这样的东西$('#email').isvalid();
我已经检查了Validator的element方法但是验证了元素,而不仅仅是检查它的值是否有效。所以换句话说,我正在寻找一种以编程方式运行规则的方法。任何帮助表示赞赏!
下面的表单验证器功能:
var validator = $("#olForm").validate({
rules: {
"email": {
required: true,
email: true
},
"phone": {
required: true,
digits: true,
minlength: 9,
maxlength: 11
}
}
});
答案 0 :(得分:9)
回应原来的jsfiddle,请看这个版本:
这可以通过三种方式进行修改:首先,在底部,将一个简单的布尔值设置为等于两个字段是否有效(然后提醒)。当每个valid()调用返回一个布尔值时,您可以简单轻松地检查所有表单元素的有效性。
其次,使用没有内部代码的自定义showErrors函数扩展validate选项。此函数会覆盖验证错误的默认行为,以便在检查字段的内部有效性并处理字段的有效性时,不会显示实际的错误文本,从而启用所有验证规则,但不会显示验证结果。
最后,虽然在初始问题中未明确请求,但我添加了可选的“onsubmit:false”设置,该设置会覆盖validate调用的阻止表单提交的默认行为,除非成功检查所有验证规则。如果你想阻止提交(我认为你会这样做),这可以删除,但我认为这是一个有用的功能要注意。我把它包括在这里,以防你有一个特殊情况,即使表格的验证失败,你也希望表格提交。
绝对值得查看验证的选项列表;您可以通过多种方式调整验证器的行为,以满足您的需求。
答案 1 :(得分:6)
有一个未记录的方法 check(),它专门执行此操作而不实际设置字段样式或显示任何错误:
var validator = $('form').validate();
if( validator.check('#email') ){
// this field is valid but no styling was applied
}
答案 2 :(得分:2)
有handy method called .checkForm()
(截至2015年9月未记载),这使得这很容易。与调用.valid()
不同,调用它时不会显示表单错误:
// Returns a boolean
$('form').validate().checkForm();
答案 3 :(得分:1)
听起来好像在寻找.valid()方法。请注意,您仍然必须对整个表单运行validate()以初始化窗口小部件。