带有参数的JQuery验证引擎中的自定义函数

mat*_*mat 4 validation jquery jquery-validation-engine

我想为JQuery Validation Engine编写一个新的验证规则.你似乎所要做的就是编写一个这样的函数:

"myNewRule":
           "func": function(field, rules, i, options){
                //new validation function
           },
           "alertText": "message to be displayed if something goes wrong"
},
Run Code Online (Sandbox Code Playgroud)

现在,有谁知道如何访问字段ID(或名称)或如何传递参数?我需要验证字段B的值是否小于字段A,因此知道我应该将哪个字段与...进行比较非常重要.

mat*_*mat 10

好的,我明白了.

  • 第一个参数(即字段)是一个字段对象,因此可以在其上调用jQuery的方法,例如,您可以使用field.val()获取字段值.
  • 第二个参数是一个数组,其中包含您为该字段选择的所有规则,它们以逗号分隔,并且此数组不包括括号[]和逗号.
  • i+1为您提供规则开始的规则数组中的位置,如果您有参数,它将非常有用.
  • 最后一个参数包含表单中有关验证规则的所有信息,但您并不真正需要它.

我需要验证字段的值是否大于另一个字段,因此我执行了以下操作:

JavaScript的:

function geThan(field, rules, i, options){
 var a=rules[i+2];
 if(parseFloat(field.val()) < parseFloat( jQuery("#"+a).val() ) ){
   return "Value is smaller than a, and should be greater than or equal to it."
 }
}
Run Code Online (Sandbox Code Playgroud)

和HTML是:

    <input type="text" id="porce_1" name="porce_1" data-validation-engine="validate[required,custom[number],min[0],max[100]]">
    <input type="text" id="porce_2" name="porce_2" data-validation-engine="validate[required,custom[number],min[0],max[100],funcCall[geThan[porce_1]]]">
Run Code Online (Sandbox Code Playgroud)

我没有像我最初想的那样将我的代码放在插件中,而是在我的页面的head部分中使用funcCall而不是.