10

我正在使用 jQuery 验证插件,并定义了一个表单验证函数,如下所示。基于一些用户操作,我正在运行一个自定义 JS 函数,在该函数中我只想检查电子邮件和电话字段是否有效。我不想验证它们,即我不想显示验证错误,我只需要检查它们的值是否有效。

就像是

$('#email').isvalid();

我已经检查了 Validator 的元素方法,但它验证了元素,而不仅仅是检查它的值是否有效。所以换句话说,我正在寻找一种以编程方式运行规则的方法。任何帮助表示赞赏!

下面的表单验证器功能:

var validator = $("#olForm").validate({
    rules: {
        "email": {
             required: true,
             email: true
        },
        "phone": {
             required: true,
             digits: true,
             minlength: 9,
             maxlength: 11
        }
    }
});
4

4 回答 4

9

回应原jsfiddle,请看这个版本:

http://jsfiddle.net/33PGQ/23/

这可以通过三种方式进行修改:首先,在底部,一个简单的布尔值设置为等于两个字段是否有效(然后发出警报)。由于每个 valid() 调用都返回一个布尔值,您可以简单轻松地检查所有表单元素的有效性。

其次,使用没有内部代码的自定义 showErrors 函数扩展了 validate 选项。此函数会覆盖验证错误的默认行为,这样虽然可以检查字段的内部有效性并处理字段的有效性,但不会显示实际的错误文本,从而启用所有验证规则但消除显示验证结果。

最后,虽然在最初的问题中没有明确要求,但我添加了可选的“onsubmit:false”设置,它会覆盖 validate 调用的默认行为,即阻止表单提交,除非所有验证规则都已成功检查。如果您想阻止提交(我假设您会这样做),可以将其删除,但我认为这是一个需要注意的有用功能。我将它包括在这里,以防您遇到特殊情况,即使表单验证失败,您也希望提交表单。

绝对值得查看用于验证的选项列表;您可以通过多种方式调整验证器的行为以完全适合您的需求。

于 2012-09-21T04:41:22.937 回答
8

有一个未记录的方法check()专门执行此操作而没有实际设置字段样式或显示任何错误:

var validator = $('form').validate();
if( validator.check('#email') ){
  // this field is valid but no styling was applied
}
于 2015-11-03T09:31:25.843 回答
3

有一个方便的方法称为.checkForm()(截至 2015 年 9 月未记录),这使得这非常容易。与 call 不同.valid(),它在被调用时不会显示表单错误:

// Returns a boolean
$('form').validate().checkForm();
于 2015-09-25T13:14:24.283 回答
2

听起来您正在寻找 .valid() 方法。请注意,您仍然必须对整个表单运行 validate() 才能初始化小部件。

http://docs.jquery.com/Plugins/Validation/valid

于 2012-09-18T15:56:07.523 回答