如何使用jQuery选择空输入(值="")

时间:2012-05-18 10:57:09

标签: javascript jquery jquery-selectors

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

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

但这似乎 SET 值,而不是检查它。有什么想法吗?

8 个答案:

答案 0 :(得分:87)

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

为什么必须使用filter而不是[value=""]this DEMO

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

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

注意:

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

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

答案 1 :(得分:10)

$('input:text[value=]','#sender_container').addClass('error');

DEMO

答案 2 :(得分:3)

$('#sender_container input.required[value=""]').addClass('error')

答案 3 :(得分:1)

jQuery('#sender_container input.required[value=""]').addClass("error");

你可以试试这个:

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

<强> DEMO

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

答案 4 :(得分:0)

$field = $("#sender_container input.required");
if( ! $field.val())
{
    $field.addClass("error");
}
这种简单的方法可能有用。

答案 5 :(得分:0)

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

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

但请注意,如果value属性不存在,这将无效。如果用户或脚本更改了当前输入值,它也不会工作。

如果您想获取当前输入值,可以使用 jquery &#39; filter函数:

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

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

在您选择 jquery 元素后,您可以添加您的课程:

elements.addClass('error');

答案 6 :(得分:0)

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

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

});

答案 7 :(得分:0)

对于那些 input.required 不能正常工作的情况,写如下:

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