【问题标题】:How do I stop further validation if one fails如果验证失败,如何停止进一步验证
【发布时间】:2012-12-04 09:08:44
【问题描述】:

我最近才开始使用jquery validation engine,我想知道:

我在一个场景中,我只想在另一个字段不为空时验证一个字段。我已将 condRequired 验证规则应用于该字段,它工作正常,但 condRequired 之后的所有其他规则都被触发。例如:

<input type="password" id="current-password" name="current-password" placeholder="Current Password" class="validate[condRequired[password],ajax[ajaxValidateUserPassword]]"> 
<input type="password" id="password" name="password" placeholder="New Password" class="ajax[ajaxValidateUserRegistration]]">

如果用户决定要更新密码,则必须输入当前密码。但是,如果用户输入了新密码,我只想验证当前密码。所以我有:

validate[condRequired[password],ajax[ajaxValidateUserPassword]] 

作为当前密码的验证规则。问题是:即使用户没有输入新密码,

condRequired[password] 

会失败,但是

ajax[ajaxValidateUserPassword]

还是会被解雇。

有没有办法获得

ajax[ajaxValidateUserPassword]

验证规则被跳过,如果

condRequired[password] 

规则失败?想法是如果没有输入新密码,我不想对当前密码进行任何验证

谢谢!

【问题讨论】:

标签: javascript jquery jquery-validation-engine


【解决方案1】:

ValidationEngine 允许您指定使用自定义函数来确定有效性的验证规则。

<input value="" class="validate[required,funcCall[checkHELLO]]" type="text" id="lastname" name="lastname" />

function checkHELLO(field, rules, i, options){
  if (field.val() != "HELLO") {
     // this allows the use of i18 for the error msgs
     return options.allrules.validate2fields.alertText;
  }
}

如果“新密码”不为空,您可以在该函数中调用任何 ajax 来验证字段

【讨论】:

  • 谢谢安德烈,我看到了这个,但我希望有更优雅的方式?我猜这是我最好的选择
【解决方案2】:

使用选项“maxErrorsPerField”:

$("form").validationEngine({
    maxErrorsPerField: 1
});

【讨论】:

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