我的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)
警告显示警告。
似乎在任何情况下都忽略了“规则”。
可能出现什么问题?
答案 0 :(得分:1)
所有问题都是因为验证插件按名称识别控件,而不是ID。
答案 1 :(得分:0)
我认为使用您的功能的正确方法如下:
jQuery.validator.addMethod("validateCardNotExpired", function(value, params, element){
alert("validate exp");
.........
}, 'Your card has expired.');
基本上元素应该是函数中的第三个参数。