2013-04-25 123 views
2

我試圖使用Happy.js驗證表單客戶端。基於條件的表單元素(Happy.js)

基本驗證工作正常,但我有一個稍微複雜的部分,我需要驗證它是一個更復雜一點。本質上,有一個是/否的無線電盒,如果是的話,顯示幾個輸入標籤。只有單選按鈕爲yes時才需要這些標籤,否則不需要。

有沒有人有任何建議如何做到這一點?我正在考慮將它們設置爲非必需,然後創建一個快樂函數,如果輸入爲空且單選按鈕設置爲是,則該函數將返回false。

事情是這樣的:

"#input":{ 
    required: false, 
    message: "required", 
    test: happy.needed(parameter) 
} 

感謝。

回答

3

正如文檔所述,您可以將'sometimes'傳遞給required,這將使Happy始終運行測試功能。

對於測試函數,我們只返回jQuery/Zepto is的值。

"#input":{ 
    required: "sometimes", 
    message: "Custom message", 
    test: function(input){ 
     return $(input).val() !== '' && $('#radioButton').is(':checked'); 
    } 
} 

,他們給,如果你不知道發生了什麼happy.email可能會造成混淆的例子。 JavaScript中的函數是第一類的,這意味着你可以像變量一樣傳遞它們。

因此,如果我們寫:

var isRadioButtonChecked = function(input) { 
    return $(input).val() !== '' && $('#radioButton').is(':checked'); 
} 

然後在我們的驗證規則,我們可以這樣寫:

"#input":{ 
    required: "sometimes", 
    message: "Custom message", 
    test: isRadioButtonChecked 
} 

這將是一個有點更簡潔。

+0

謝謝您的詳細解釋先生。 – 2015-04-21 07:47:34