如何使用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值,你可以使用jqueryfilter函数:

 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'); } });