我正在尝试使用jQuery Validate进行数值验证,但仅在选中单选按钮时才进行验证;如果未选中单选按钮,则需要该字段,但用户可以插入字母数字值;问题是只验证字段是否为空,并且console.log显示我想要的值(true或false),但是在提交时将数据发送到服务器。这就是我所拥有的:
$("#new_redeem_coupon").validate({
rules:{
'redeem_coupon[confirmation_number]': {
required: function(element){
var v = $("#redeem_coupon_confirmation_number").attr("value");
if($("#redeem_coupon_coupon_kind_0").attr("checked") == "checked"){
ret = (v == "");
console.log("VALUE1: " + ret);
return ret;
}
else{
var ret = (v == "" || isNaN(v));
console.log("VALUE2: " + ret);
return ret;
}
}
}
},
errorPlacement:function(error, element){
$(element).attr("title",error.html()).tooltip({track:true});
},
success:function(label){
},
errorClass: "invalid",
focusCleanUp: true
});
我也试过以下代码,但它没有用;该值始终为false:
'redeem_coupon[confirmation_number]': { required:true, number: $("#redeem_coupon_coupon_kind_0").attr("checked") != "checked" }
提前感谢您的帮助。
PabloMartí
答案 0 :(得分:2)
解决方案:使用http://docs.jquery.com/Plugins/Validation/rules#.22add.22rules
上列出的add
和remove
方法
规则:
$("#new_redeem_coupon").validate({
rules:{
'redeem_coupon[confirmation_number]': {required: true}
},
errorPlacement:function(error, element){
$(element).attr("title",error.html()).tooltip({track:true});
},
success:function(label){
},
errorClass: "invalid",
focusCleanUp: true
});
我在无线电上添加一个事件,为每种情况添加和删除规则:
$(".coupon_kind_opt").change(function(){
if($("#redeem_coupon_coupon_kind_0").attr("checked") == "checked"){
$("#redeem_coupon_confirmation_number").rules("remove", "number");
}
else{
$("#redeem_coupon_confirmation_number").rules("add", {
number: true
});
}
})