如何检查某个部分中(required
)个输入字段的空值,然后使用jQuery在事件上为它们添加一个类?到目前为止,我已经尝试过:
jQuery("#sender_container input.required").val("").addClass("error");
但这似乎 SET 值,而不是检查它。有什么想法吗?
答案 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');
答案 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");