对ajax表单提交使用jQuery验证,如果任何文本输入有类“错误”,我想向errorContainer添加一个类。看似简单,但我认为这是一个范围问题?
if ($('#myInput').hasClass('error')) {
$('#errorContainer').addClass('foo');
}
我把它放在提交处理程序之外,在提交处理程序之外,在验证调用之外,在验证调用之内...都无济于事。有没有人成功地完成了这个简单的任务?
答案 0 :(得分:2)
你可以这样做:
if ($('input[type=text].error').length > 0) {
$('#errorContainer').addClass('foo');
}
即使只有一个匹配项,选择器$('input[type=text].error')
也会返回一个类似数组的对象。所以问一个数组hasClass('error')
是否有意义。
您真正想要做的是在要检查错误类的元素周围放置一个容器。您可能已经有一个像表单一样的容器(如果它是表单上的所有输入)。然后你可以做这样的事情:
<form id="myForm">
<input type="text" name="a" />
<textarea name="b"></textarea>
<input type="submit" value="Submit" />
</form>
使用JavaScript:
$(':input.error', '#myForm').length > 0
以下是jsfiddle示例。请注意,使用:input selector会提供比input
更多的输入类型,这可能是您想要的。
答案 1 :(得分:1)
大多数返回值的函数(例如.val()
,.hasClass()
等)只会对jQuery中包含的所选元素组中的第一个元素起作用对象
通常在这些情况下,你需要做的是使用.each()
函数迭代所有元素,然后对每个元素进行测试。
但是,由于您正在测试课程,您可以修改您的病情,详见Cymen的答案。
答案 2 :(得分:1)
您可以使用toggleClass并传递条件
$('#errorContainer').toggleClass('foo',$('input[type=text].error').length > 0);
所以,如果有任何类错误..添加类foo ..否则删除类foo