环境
- 火狐 20.0.1
- jQuery 1.7.1
我有一组验证功能:
var firstName = $('#FirstName'),
lastName = $('#LastName'),
dateOfBirth = $('#DateOfBirth'),
city = $('#City'),
phone = $('#Phone'),
email = $('#Email'),
insType = $('#InsType'),
otherInsType = $('#OtherInsType'),
insID = $('#InsID'),
service = $('#Service'),
otherService = $('#OtherService'),
comments = $('#Comments'),
outOfPocket = $('#OutOfPocket'),
permission = $('#Permission'),
signature = $('#Signature');
function formIsValid() {
if (missingRequiredField([
firstName, lastName, dateOfBirth, city, phone, email,
insType, insID, service, comments, outOfPocket, permission,
signature
])) {
alert('There is a missing required field.');
return false;
}
alert('The form was valid.');
return false;
}
function missingRequiredField(objs) {
var hasError = false;
objs.forEach(function(o) {
if (!$(o).val()) {
$(o).addClass('error');
hasError = true;
}
});
return hasError;
}
而且我知道它们有效,因为当我将字段留空时,我会得到alert('There is a missing required field.');
. 但由于某种原因,$(o).addClass('error');
实际上并没有添加类。我知道这门课是有效的,因为如果我手动添加它,视觉风格看起来就像我想要的那样。此外,我知道它没有添加类,因为我在获取alert
.
我在这里错过了什么吗?我认为这是直截了当的——甚至检查了 jQuery 文档,它看起来对我来说是正确的。
以下是标记中的字段之一的示例:
<div>
<label for="FirstName">First Name</label>
<input type="text" id="FirstName" name="FirstName" />
</div>
编辑
我什至把它拉到forEach
一个基本的for
循环中,但addClass
仍然没有。该函数正在工作,因为当字段没有值时hasError
返回- 只是那个 stubborn 。注意:我确实在这个版本中去掉了不必要的周围。true
addClass
$
o
function missingRequiredField(objs) {
var hasError = false;
for (var i = 0; i < objs.length; i++) {
var o = objs[i];
if (!o.val()) {
o.addClass('error');
hasError = true;
}
}
return hasError;
}