我必須說,首先,我從來沒有使用位置絕對的表單驗證引擎, ,但我對它感興趣的閱讀你的問題。 從文檔(https://github.com/posabsolute/jQuery-Validation-Engine)看來,您必須創建自定義驗證功能。
我創建了一個工作小提琴這裏:http://jsfiddle.net/5pKjW/6/
即使它的作品,我並不完全滿意,因爲在線路584
的,因爲在驗證引擎這種情況下需要一個「定點值」
// If the rules required is not added, an empty field is not validated
if(!required && field.val() == "" && !errorMsg) options.isError = false;
這是選擇枝條的標記的自定義函數:
<select class="validate[funcCall[checkCountry]]" type="text" name="state" id="state">
<option value="none" ></option>
<option value="CALIFORNIA" >CALIFORNIA</option>
<option value="NEW ENGLAND" >NEW ENGLAND</option>
<option value="TEXAS" >TEXAS</option>
</select>
這是驗證初始化:
jQuery("#formID").validationEngine({
'customFunctions': {
'checkCountry': function (field, rules, i, options){
if ($('#country').val() === 'USA' && field.val() === 'none') {
return options.allrules.required.alertText;
}
}
}
});
1)首先,你必須定義可以是全局的,也可以作爲插件的參數傳遞驗證功能(如我上面做的)。一個自定義函數接受這個輸入:field,rules,i,options。 您沒有參考表格,您只能參考當前字段。 所以,如果你想訪問另一個領域,你必須像往常一樣選擇jQuery(例如:$('#country'))。
2)您檢查驗證條件。在下面的示例中它失敗:
$('#country').val() === 'USA' && field.val() === 'none'
如果不遵守條件,函數必須返回一個字符串。在這個例子中,我在options.allrules.required中返回了標準消息。該文檔解釋瞭如何爲自定義函數定義自定義消息。
正如你所看到的,因爲在驗證引擎的
if(!required && field.val() == "" && !errorMsg) options.isError = false;
線,開發商被迫作出的條件內if
失敗,所要求的條件設置爲true或錯誤信息一個虛假的價值是不正確的。所以唯一的辦法就是製作field.val() != ''
。 因此,標記中的第一個選項元素的標記值爲none
,而不是空白。這不是一個乾淨的解決方案,甚至可能無法輕鬆實現(我不知道你是否自己生成標記(如果你不這樣做,事情會變得更加困難,而且你需要通過JavaScript處理表單,在驗證引擎初始化之前))。
這不是一個乾淨的解決方案。 一個更好的解決方案應該使用condRequired
,如果它只接受一個自定義函數,而不是隻檢查是否其中一個參數已被填充。
Giovanni,這比我預期的要多得多。非常感謝!我會試一試並回復。再次感謝您:) Ike – 2012-07-17 12:55:05
嗨喬瓦尼,我非常感謝您的回覆。我不知道如何將其整合到框架中。我創建了一個自定義函數,並將其包含在主窗體頁面(位於「HELLO」函數下面),並對CSS所需的所有調整等進行了調整。但我認爲我沒有這樣做。謝謝! – 2012-07-17 19:50:19
不幸的是,我應該能夠看看代碼,看看發生了什麼。你可以隨意在jsfiddle.net上創建一個小提琴,甚至更新我發佈的那個。 – 2012-07-17 22:49:42