我正在使用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