为什么自定义验证器方法不会触发?

时间:2015-03-17 06:12:08

标签: jquery jquery-validate

我已经创建了一个自定义验证,我想用它来比较2个选择框,但是附加方法没有解决不确定如何修复它? 这是jsfiddle:http://jsfiddle.net/ughCm/97/ 在选择价值的变化时,它不会触发“comaremodelyear”'方法,甚至不在.valid()。

这是代码

$.validator.addMethod("comparemodalyear", function(value, element, param) {
    alert('h');
    return true;    
}, "From year must be greater!");

$(document).ready(function() {
    $('#savebtn').click(function() {
        var test = $("#experiment").valid();
    });

});

html代码:

<form id="experiment" action="/" method="post">
    <input type="text" required name="fine" />
<select comparemodalyear name="testingA">
    <option value="1">Val1</option>
    <option value="2">Val2</option>
</select>
    <button id="savebtn" type="button">Save</button>
</form>

1 个答案:

答案 0 :(得分:1)

您需要将其添加为类而不是属性

<select class="comparemodalyear" name="testingA">
    <option value="1">Val1</option>
    <option value="2">Val2</option>
</select>

然后

$.validator.addClassRules('comparemodalyear', {
    comparemodalyear: true
});

演示:Fiddle


如果您不想将自定义值传递给规则,则无需addClassRules(),因为addMethod()会根据addClassRules()method.length < 3进行内部调用method.length条件,其中$.validator.addMethod("comparemodalyear", function (value, element) { alert('h'); return true; }, "From year must be greater!"); 是验证方法的count of arguments

{{1}}

演示:Fiddle