我正在使用jQuery進行一些表單驗證,驗證每個字段onblur。除非我有分組(依賴)字段,否則一切都很好。我一直在尋找的是一種方法來驗證這些領域只有當他們都被模糊了。它們可以分組爲jQuery對象的集合,也可以作爲包含元素的子元素。jQuery - 多場模糊
一個例子是生日輸入由三個<選擇>元素:
<fieldset>
<label for="bday_month">Birthday:</label>
<select name="userBirthday[month]" id="bday_month">
<option value="0">Month</option>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
...
</select>
<select name="userBirthday[day]" id="bday_day">
<option value="0">Day</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
...
</select>
<select name="userBirthday[year]" id="bday_year">
<option value="0">Year</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
...
</select>
</fieldset>
由於它目前爲,驗證功能被綁定到每個字段的模糊()事件。成組的字段將找到其依賴項並進行正確驗證,但是,在標記字段時,會顯示錯誤消息,因爲用戶尚未完成輸入。
我已經嘗試將blur()事件添加到字段集並綁定自定義事件,但都沒有太多運氣。
以供參考,這是我目前有模糊()函數:提前
fieldBlur = function(e){
// Array of objects w/specific validation functions, arguments, etc.
validators = $(this).data('validators');
// Process each validator separately
for(key in validators){
validator = validators[key];
$field = validator.$field;
// Extracts the value from grouped fields as an array
val = valHelper($field);
// Call one of the pre-defined validation functions
functionResponse = eval(validator.options.functionName + "(val, validator.options.functionArgs);");
if(!functionResponse){
validator.$error.find('.text').text(validator.options.errorMsg);
validator.$info.hide();
validator.$error.show();
e.preventDefault();
break; // Only display the first error
} else {
validator.$error.hide();
}
}
return true;
};
謝謝,讓我知道更多的代碼/解釋將是有益的。
不是一個壞主意。如果用戶通過表單向後拖動,它會使用鼠標,但是我真的很喜歡簡單! – nleach 2009-08-24 22:41:21