2011-05-16 160 views
5

這裏是我的測試簡單的驗證碼:jQuery驗證:自定義規則不叫

jQuery.validator.addMethod("oneTypeChecked", function (value, element) { 
     return false; //$(':checkbox:checked') > 0 
    }, "Check one or more type"); 

    $("#RequestCreateForm").validate({ 
     rules: { 
      ChkBoxType1: { oneTypeChecked: true } 
     } 
    }); 

但是,當我提交表單我oneTypeChecked方法不會被調用。 爲什麼?

這裏是我的HTML代碼:

<div class="editor-field"> 
    <input type="checkbox" id="ChkBoxType2" name="requestTypeIds2" value="2">Type 2  
    <input type="checkbox" id="ChkBoxType1" name="requestTypeIds1" value="1">Type 1   
    <input type="checkbox" id="ChkBoxType3" name="requestTypeIds3" value="3">Type 3 
</div> 

非常感謝您!

+0

可你也發表您的HTML標記?是否有可能在你的標記中沒有一個叫做「ChkBoxType」的元素? – 2011-05-16 16:04:49

+0

@sJhonny:完成了! – Tuizi 2011-05-16 16:11:53

+0

驗證不是開箱即用的標準 - 您使用的是哪個插件。 – Hogan 2011-05-16 16:15:36

回答

6

驗證插件根據屬性,而不是ID的工作。嘗試更改輸入中的名稱屬性。

+0

是的!這是真的!用它的名字是有效的!非常感謝! – Tuizi 2011-05-16 18:07:34

0

據我所知,如果你沒有添加所需的它將是有效的,因爲它沒有被檢查。

rules: { 
     ChkBoxType1: { required : true, oneTypeChecked: true } 
    } 
+0

不,需要的是至少需要一個複選框,而不僅僅是'ChkBoxType1' – Tuizi 2011-05-16 16:41:14

2

與這個網站

<form id="RequestCreateForm" action="" method="post"> 
    <div class="editor-field"> 
     <input type="checkbox" class="oneTypeChecked" name="requestTypeIds2" value="2">Type 2  
     <input type="checkbox" class="oneTypeChecked" name="requestTypeIds1" value="1">Type 1  
     <input type="checkbox" class="oneTypeChecked" name="requestTypeIds3" value="3">Type 3 
    </div> 
    <input type="submit" value="submit" /> 
</form> 

與這個jQuery

jQuery.validator.addMethod("oneTypeChecked", function(value, element) { 
    return $('.oneTypeChecked:checked') > 0 
}, "Check one or more type"); 

$("#RequestCreateForm").validate({ 
    rules: { 
     ChkBoxType1: { 
      oneTypeChecked: true 
     } 
    } 
}); 

你會得到結果,你想

這裏是一個WORKING DEMO

+1

爲什麼我的自定義驗證不起作用,您的解決方案最終顯示給我,我沒有將方法名稱添加到輸入類中。謝謝!沒有其他的例子顯示這個關鍵的步驟 – BMills 2017-06-14 11:18:46

+0

我很高興這有助於你,有一個美好的一天 – mcgrailm 2017-06-14 16:15:41

+1

謝謝..在這個問題上花了超過4個小時,最後它歸結爲這個!謝謝曼......這絕對是輝煌的 – Nirman 2017-08-30 07:33:28