2014-01-28 30 views
0

我想添加一個自定義方法來驗證一組單選按鈕,使用jQuery validate插件的v1.9。jQuery驗證,單選按鈕組,嵌套問題

相反this post,它可以具有用於無線電按鈕輸入相同的名稱屬性,只要任何類的規則只適用於一個輸入。 jQuery驗證,然後將您的輸入組視爲單個輸入。

當你輸入的一個共同的父的孩子這工作,即

<input type="radio" name="radiogroup" value="1" class="input-shipping" checked="checked"> 
<input type="radio" name="radiogroup" value="2"> 
<input type="radio" name="radiogroup" value="3"> 
<input type="radio" name="radiogroup" value="4"> 

但只要HTML結構的改變,沒有應用驗證規則:

<div class="form-row"> 
    <input type="radio" name="radiogroup" value="1" class="input-shipping" checked="checked"> 
</div> 

<div class="form-row">   
    <input type="radio" name="radiogroup" value="2"> 
</div> 

<div class="form-row">    
    <input type="radio" name="radiogroup" value="3"> 
</div>    

<div class="form-row"> 
    <input type="radio" name="radiogroup" value="4">   
</div> 

是任何人都知道解決這個問題的方法?類規則添加如下:

$.validator.addClassRules({ 
    "input-shipping" : { 
     required: true, 
     dateselected: true 
    } 
}); 

$.validator.addMethod("dateselected", function(value, element) { 
    console.log(element); 
}); 

回答

1

原因驗證規則沒有被稱爲是該自定義單選按鈕被使用,其中一組輸入到沒有CSS顯示值,並且僞元素被代替風格向上的原始投入。

將其更改爲visibility:hidden;驗證程序似乎拿起規則OK。

要創建基於所選擇的輸入的值的自定義方法,需要過濾的進一步級別:

$.validator.addMethod("dateselected", function(value, element) { 
    var radios = $('input[name='+element.name+']'), 
    val = radios.filter(':checked')[0].value; 
    console.log(val); 
});