JQuery自定义验证不起作用

时间:2012-03-04 17:47:42

标签: jquery validation handler params

我的HTML代码是:

<select class="validateCardNotExpired" id="order_credit_card_expiration_month">
<option value="1">Jan</option>
<option value="2">Feb</option>
..........
</select>

<select class="validateCardNotExpired" id="order_credit_card_expiration_year">
<option value="2012">2012</option>
<option value="2013">2013</option>
......
</select>

Javascript代码是:

$(document).ready(function() {

jQuery.validator.addMethod("validateCardNotExpired", function(value, element, params){
        alert("validate exp");
.........
    }, 'Your card has expired.');

$("#order_form").validate({
tried also:
jQuery.validator.setDefaults({

    rules: {
        order_credit_card_expiration_month: {
            validateCardNotExpired: {
                month: '#order_credit_card_expiration_month',
                year: '#order_credit_card_expiration_year'
            }
        },
        order_credit_card_expiration_year: {
            validateCardNotExpired: {
                month: '#order_credit_card_expiration_month',
                year: '#order_credit_card_expiration_year'
            }
        }
    }
});

}

问题是:

当我使用(在每个示例中推荐)具有三个参数的处理程序时:

function(value, element, params)

警报没有显示(似乎JQ验证引擎遇到一些异常,顺便说一下,在这种情况下如何捕获它?)

当我删除第三个参数时:

function(value, element)
警告显示

警告。

似乎在任何情况下都忽略了“规则”。

可能出现什么问题?

2 个答案:

答案 0 :(得分:1)

所有问题都是因为验证插件按名称识别控件,而不是ID。

答案 1 :(得分:0)

我认为使用您的功能的正确方法如下:

jQuery.validator.addMethod("validateCardNotExpired", function(value, params, element){
        alert("validate exp");
.........
    }, 'Your card has expired.');

基本上元素应该是函数中的第三个参数。