2012-12-12 27 views
0

我試圖使用jQuery進行驗證驗證數字值,但僅當單選按鈕被選中;如果未選中單選按鈕,則該字段將是必需的,但用戶可以插入字母數字值;問題是隻驗證字段是否爲空,並且console.log顯示我想要的值(true或false),但是當提交數據發送到服務器時。這是我有:Jquery驗證插件 - 僅適用於某些情況下的數值字段

$("#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" } 

在此先感謝您的幫助。

巴勃羅·馬蒂

回答

2

解決方案:使用上列出的addremove方法:http://docs.jquery.com/Plugins/Validation/rules#.22add.22rules

規則:

$("#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 
     }); 
    } 
}) 
相關問題