环境
- 的Mozilla Firefox 20.0.1
- 的jQuery 1.7.1
我有一组验证功能:为什么jQuery addClass方法不在这里工作?
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
后检查了Firebug中的元素。
我在这里错过了什么吗?我认为这是直截了当的 - 即使使用jQuery文档进行检查,它看起来是对的。
这里是标记以及中的一个字段的一个例子:
<div>
<label for="FirstName">First Name</label>
<input type="text" id="FirstName" name="FirstName" />
</div>
编辑
我连拉forEach
伸到基本for
循环和addClass
仍是用不了。该功能正在工作,因为hasError
返回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;
}
您的代码犯规告诉我们什么样的对象的名字,姓氏,......他们在jQuery的对象? – RafH 2013-05-08 23:03:32
@RafH,够公平的。我已经用他们的声明更新了这个问题。谢谢! – 2013-05-08 23:04:36
FWIW:Array.forEach()不支持比IE9更早的IE。 – 2013-05-08 23:05:08