如何使用jQueryselect空input(value =“”)
我怎样才能检查( required
)input字段的空值,然后添加一个类,他们在一个事件,使用jQuery? 到目前为止,我已经尝试过:
jQuery("#sender_container input.required").val("").addClass("error");
但是,这似乎是设置的价值,而不是检查它。 有任何想法吗?
jQuery("#sender_container input.required").filter(function() { return !this.value; }).addClass("error");
为什么你必须使用filter
而不是[value=""]
你可以在这个演示中看到
原因是:属性select器检查元素的初始状态,而不是当前状态。 (注意,你可以用attr
函数改变“初始”状态,但这是不好的做法,你应该总是使用prop
)
所以如果你改变input值,当前值不会影响属性select器。 不明智… :)
笔记:
-
.val()
返回表单元素的值,并断开jQuery链,$('selector').val().addClass('foo')
错误 ,返回值是一个string\ 数字 -
.val(valueToSet)
设置表单元素的值,不会中断jQuery链。
$('selector').val("some value").addClass('foo')
– 有效 ,返回值是一个jQuery
$('input:text[value=]','#sender_container').addClass('error');
DEMO
$('#sender_container input.required[value=""]').addClass('error')
$field = $("#sender_container input.required"); if( ! $field.val()) { $field.addClass("error"); }
这个简单的方法可能工作。
jQuery('#sender_container input.required[value=""]').addClass("error");
你可以试试这个:
$('input:not([value!=""])').addClass('error');
DEMO
注意:这个答案不应该被使用,它没有被删除的唯一原因是可以从中学习到的。
如果您只需要根据input的初始属性值进行select,那么将会执行以下操作:
var elements = $('#sender_container input.required[value=""]')
但请注意,如果value
属性不存在,这将不起作用。 如果已被用户或脚本更改,它也不会用于当前input值。
如果你想获得当前的input值,你可以使用jquery的filter
函数:
var elements = $('#sender_container input.required').filter(function() { return this.value === ''; // alternatively for "no value": // return !this.value; })
在你select了jQuery元素之后,你可以添加你的类:
elements.addClass('error');
要检查所有的领域可能会有所帮助。
$('#sender_container [required]').each(function(index) { if (!($(this).val())) $(this).addClass('error'); } });