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

Ric*_*ris 51 javascript jquery jquery-selectors

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

jQuery("#sender_container input.required").val("").addClass("error");
Run Code Online (Sandbox Code Playgroud)

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

gdo*_*ica 95

jQuery("#sender_container input.required").filter(function() {
    return !this.value;
}).addClass("error");?
Run Code Online (Sandbox Code Playgroud)

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

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

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

笔记:

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

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


h0m*_*yun 11

$('input:text[value=]','#sender_container').addClass('error');
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 这在jQuery 1.9+中不起作用,请参阅https://jquery.com/upgrade-guide/1.9/#attr-versus-prop- (2认同)