如果表单字段无效,请添加类

时间:2012-12-07 16:29:24

标签: jquery jquery-validate

对ajax表单提交使用jQuery验证,如果任何文本输入有类“错误”,我想向errorContainer添加一个类。看似简单,但我认为这是一个范围问题?

if ($('#myInput').hasClass('error')) { 
  $('#errorContainer').addClass('foo'); 
}

我把它放在提交处理程序之外,在提交处理程序之外,在验证调用之外,在验证调用之内...都无济于事。有没有人成功地完成了这个简单的任务?

3 个答案:

答案 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