56

如何检查required一个部分中 ( ) 输入字段的空值,然后使用 jQuery 在事件中向它们添加一个类?到目前为止,我已经尝试过:

jQuery("#sender_container input.required").val("").addClass("error");

但这似乎是设置值,而不是检查它。有任何想法吗?

4

7 回答 7

114
jQuery("#sender_container input.required").filter(function() {
    return !this.value;
}).addClass("error");​

为什么你必须使用filter而不是[value=""]你可以在这个 DEMO中看到

原因是:属性选择器检查元素的初始状态,而不是当前状态。(请注意,您可以使用该attr函数更改“初始”状态,但这是不好的做法,您应该始终使用prop

因此,如果您更改输入值,当前值不会影响属性选择器。不明智...:)

笔记:

  • .val() 返回表单元素的值,并打破jQuery链, $('selector').val().addClass('foo') Error,返回值为字符串\数字

  • .val(valueToSet) 设置表单元素的值并且不会破坏 jQuery 链。
    $('selector').val("some value").addClass('foo')-有效,返回值为一个jQuery

于 2012-05-18T10:58:53.837 回答
11
$('input:text[value=]','#sender_container').addClass('error');

演示

于 2014-04-27T08:29:56.490 回答
3
$('#sender_container input.required[value=""]').addClass('error')
于 2012-05-18T10:58:42.190 回答
2
jQuery('#sender_container input.required[value=""]').addClass("error");

你可以试试这个:

$('input:not([value!=""])').addClass('error');

演示

注意:不应使用此答案,它未被删除的唯一原因是可以从中学习。

于 2012-05-18T10:58:08.707 回答
0
$field = $("#sender_container input.required");
if( ! $field.val())
{
    $field.addClass("error");
}

这种简单的方法可能会奏效。

于 2012-05-18T11:16:21.297 回答
0

如果您只需要根据输入的初始属性值进行选择,则可以执行以下操作:

var elements = $('#sender_container input.required[value=""]')

value但请注意,如果该属性不存在,这将不起作用。如果当前输入值已被用户或脚本更改,它也不适用于当前输入值。

如果您想获取当前输入值,可以使用jqueryfilter功能:

var elements = $('#sender_container input.required').filter(function() {
  return this.value === '';

  // alternatively for "no value":
  // return !this.value;
})

选择jquery元素后,您可以添加您的类:

elements.addClass('error');
于 2016-02-10T10:13:21.560 回答
0

要检查所有字段,这可能会有所帮助。

$('#sender_container [required]').each(function(index)
{
       if (!($(this).val())) $(this).addClass('error');
}

});
于 2017-06-19T12:10:16.533 回答