2016-07-28 71 views
0

我想根据下面的条件为单个字段提供不同的错误消息。jQuery验证相同字段的条件错误消息

jQuery(document).ready(function() { 
    //... 


    ..// 

    $("#aID").validate({ 
      rules: { 
       reason: "required", 
       aic: "required" 
       aAmt:{ 
        required: function (element) {   
        var err; 
        var new_balance = Math.round(100*beg_balance)/100 - Math.abs(Math.round(100*adjustAmount)/100); 
      if ((parseInt(aAmount) >= parseInt(a_limit_amount))) { 
       err = "123";       
       return true; 
      } 
      else if (new_balance) 
      { 

       err = "321"; 
       return true; 
      } 
      return false; 
        } 
       } 
      } 
      }, 
      messages: { 
       reason:"Please select a reason code.", 
       aic: "Please select a credit AIC.", 
       pwdOverride: err 
      }, 

    }); 

有类似下面

messages: { 
    RoutingNumber: { 
    required:"Message1", 
    digits: "Message2", 
    rangelength: "Message 3" 
    } 
} 

一个选项,但我的没有内置任何从这个插件的验证方法。 如何实现它的任何帮助?

我的意思了内置的验证,如果你看到我的其他环路aAmtrules,它不适合在jQuery验证内置的验证,如:List of built in validation methods

+0

*“但是我的程序没有任何内置的验证jquery”*〜“我的”指的是什么?如果你没有安装jQuery Validate插件,那么你不能使用上面的代码。 – Sparky

+0

@sparky我已经更新了我想要执行的验证。 – JNPW

+0

*“我没有任何建立它从jquery验证”*意思是?你有没有安装[jQuery Validate插件](https://jqueryvalidation.org)? – Sparky

回答

4

你有一些严重的语法问题,这里在我下面的评论中指出。

$("#aID").validate({ 
    rules: { 
     reason: "required", 
     aic: "required" // <- MISSING a comma here 
     aAmt: { 
      required: function(element) { 
       var err; 
       var new_balance = Math.round(100 * beg_balance)/100 - Math.abs(Math.round(100 * adjustAmount)/100); 
       if ((parseInt(aAmount) >= parseInt(a_limit_amount))) { 
        err = "123"; 
        return true; 
       } else if (new_balance) { 
        err = "321"; 
        return true; 
       } 
       return false; 
       } // <- REMOVE extra brace 
      } 
     } 
    }, 
    messages: { 
     reason: "Please select a reason code.", 
     aic: "Please select a credit AIC.", 
     pwdOverride: err // <- no such field defined in 'rules' 
    } 
}); 
  1. 您的aic规则之后缺少一个逗号。

  2. 在条件函数中有一个额外的大括号。

  3. messages之内,您指的是名为pwdOverride的字段,但在rules内没有定义这样的字段。如何在没有验证规则的字段上定义验证错误消息?

  4. 您的自定义消息的条件函数应该包含在messages对象中,而不是rules对象。 rules用于定义规则,messages用于定义消息。

更新

$("#aID").validate({ 
    rules: { 
     reason: "required", 
     aic: "required", 
     aAmt: "required" 
    }, 
    messages: { 
     reason: "Please select a reason code.", 
     aic: "Please select a credit AIC.", 
     aAmt: { 
      required: function(element) { 
       var err = "this field is required"; // default message 
       var new_balance = Math.round(100 * beg_balance)/100 - Math.abs(Math.round(100 * adjustAmount)/100); 
       if ((parseInt(aAmount) >= parseInt(a_limit_amount))) { 
        err = "123"; 
       } else if (new_balance) { 
        err = "321"; 
       } 
       return err; // <- display the custom message 
      } 
     } 
    } 
}); 

由于你已经不是我们出的形式的HTML标记,我只能提供一个通用的验证的概念例如:​​

备注

  • 注意JavaScript JavaScript控制台,因为它会告诉你许多这些语法错误。
  • 正确地格式化和使用您的代码,以便阅读和排除故障。一旦格式化,额外/遗漏的括号/大括号很容易找到。
+0

非常感谢。在消息部分使用了代码,它有所帮助。我有另一个字段的密码,这不是必填字段,但除此之外,其他条件与上述条件相同?它适用于条件,但是即使我在最后的else块中返回false操作也没有被调用。(没有返回错误信息的情况下)页面使用相同的表单提交。更新我的代码为pwd。 – JNPW

+0

@JNPW,在回答问题后请不要更换原始问题的全部内容。它断开了现有的答案,并没有帮助未来的读者。如果您有新问题,请发布新问题。谢谢。 – Sparky