filter()参数没有给出正确的输出

Jos*_*ose 2 html javascript validation jquery

我今天的问题可能很简单.我试图获取没有文本的表单内的所有必需元素(它们是输入类型,文本).这是我的JS:

var inputs = $('#form').find(':input');
if(inputs.filter('[required] [value=""]').first().focus().length)
//do something
Run Code Online (Sandbox Code Playgroud)

这是HTML中的元素:

<input type="text" name="title[]" id="name_" required />
Run Code Online (Sandbox Code Playgroud)

我应该补充一点,这个输入元素是由javascript动态添加的,这意味着它会在某个动作发生后附加.

真正的问题是,即使我没有为给定的文本字段键入值,if语句内部的代码也永远不会成立.

任何帮助表示赞赏.

Ber*_*rgi 5

value输入标签的属性是不一样的东西作为value输入元素的属性.第一个恰好在HTML中,在DOM中解析并充当defaultValue.后者是表示当前输入的输入的动态值.另请参见.prop()vs .attr()

你的元素甚至不一个value属性,所以它永远不会匹配选择.相反,您将需要使用检查属性的过滤器函数:

inputs.filter(function() {
     return this.required && this.value=="";
     // equivalent: $(this).prop("required")
     // and         $(this).prop("value") or $(this).val()
})
Run Code Online (Sandbox Code Playgroud)