2015-11-30 30 views
0

我在我的web應用程序中使用了jquery.validation插件。 我有表單驗證這個一般代碼:JQuery驗證插件和自定義規則

$('form[data-toggle="validator"]').each(function() { 
      $(this).validate({ 
       errorClass: "help-block error", 
       errorElement: "div", 
       focusCleanup: false, 
       focusInvalid: false, 
       submitHandler: function(form){ 
        $("[type=submit]",form).prop("disabled",true); 
        form.submit(); 
       } 
      }); 
     }); 

當我需要驗證我剛纔設置的數據切換屬性的形式。

在特定情況下,我想添加一個自定義規則,而不是針對單個輸入元素,而是針對所有表單。 我想在運行時添加它,它可能嗎?

+0

什麼* *究竟是你試圖在這裏做?接受的答案似乎完全與這個問題無關。 – Sparky

+0

我需要檢查一些值不嚴格連接到一個單一的元素,此外我需要在上面的代碼後添加此規則運行時,如何使用jquery驗證做到這一點? – Tobia

+0

它還有點不清楚。當您創建自定義規則/方法時,可以在任何一個或多個輸入元素上聲明它。自定義規則/方法並不特別綁定到任何一個元素。這是你的意思*「自定義功能」*? – Sparky

回答

2

我想你正在尋找添加自定義驗證方法的方法。 下面是添加驗證以檢查運行時值的最大長度的示例。

jQuery.validator.addMethod("maxLengthName", function(value, element) { 
    return value.length>30; 
}, 'Please enter a name with length less than 30.'); 

值: - 所述驗證元件
元件的電流值: - 所述 元件進行驗證

更新

上面的方法是添加自定義方法用於單個輸入元素。 現在的問題仍然是我們如何才能做到同樣的形式,而不僅僅是一個輸入元素。

不,我們不能添加自定義規則的<form>元素

但有你可以添加一個規則多個輸入的方式。以下是同樣的例子。在這個例子中,我們檢查,如果添加Input 1Input 2等於由用戶輸入Total

<form id="TotalForm" name="TotalForm"> 
    <label>Input 1</label> 
    <input type="text" name="inputone" id="inputone" class="required" /> 
    <label>Input 2</label> 
    <input type="text" name="inputTwo" id="inputTwo" class="required" /> 
    <label>Total</label> 
    <input type="text" name="inputTotal" id="inputTotal" class="required totalMatch" /> 
</form> 


jQuery.validator.addMethod("totalMatch",function(value) { 
     total = parseFloat($('#inputone').val()) + parseFloat($('#inputTwo').val()); 
     return total == parseFloat($('#inputTotal').val()); 
    }, "Total is not matching with Input 1 and Input 2!"); 

    jQuery.validator.classRuleSettings.totalMatch = { totalMatch: true }; 

現在你可以調用驗證上的document.ready功能像下面和

$("#TotalForm").validate(); 
+0

好吧,但我可以將此方法添加到

元素進行全局驗證嗎? – Tobia

+0

@Tobia我認爲這不應該是一個問題..但不知道什麼會有價值有什麼,它會得到傳播.. –

+0

@Tobia,這只是顯示如何編寫自定義規則,需要聲明每個輸入元素,所以我不明白這是如何回答你的問題:*「我想添加一個自定義函數,**不是爲一個單一的輸入元素,而是爲所有的形式**,我想添加它在運行時,有可能嗎?「* – Sparky