第一个使用jQuery的空输入字段

时间:2015-01-30 07:07:32

标签: javascript jquery

我正在尝试找到具有特定类(item_number)的第一个空输入字段

以下无效

$("#pos_transaction_line_line input[value=''].item_number:first");

如下所示

$("#pos_transaction_line_line input.item_number").each(function(){
  if(!$(this).val()){
  //get the field here
  return false;
  }
});

检查代码后,我意识到这种情况正在发生,因为即使我在文本字段中输入了一些值,文本字段的值仍然为空。 所以,我的问题是在一个manaully输入文本字段中的值之后,文本字段的值会在什么条件下填充。

其次,还有其他更好的方法来获得该领域

3 个答案:

答案 0 :(得分:1)

这是属性和属性之间的区别,value属性用于设置输入元素的初始值,之后对值进行的任何更改都将在value属性中更新。最初,value属性的值将被复制到value属性,从而给出输入字段的初始值。

我们在这里使用的选择器是attribute selector,它没有看到对value属性所做的更改,这就是为什么会发生这种情况。

答案 1 :(得分:1)

您发现更新<input>的值会更新其值propertyHTMLInputElement.value),而不更新value属性({{1} })。

我建议,虽然我不确定任何性能优势,但以下内容:

<input value="...">

然而,上述方法确实会受到以下事实的影响:它将检索与选择器匹配的所有元素,然后在返回页面中的第一个匹配项之前循环遍历// selects the collection of elements represented by the selector, // then filters that collection: $("#pos_transaction_line_line input.item_number").filter(function(){ // retains those <input>s the length of whose value property // is zero: return this.value.length === 0; // then retrieves the first element (as a jQuery object still): }).eq(0); 方法中的这些元素。 / p>

这确实会带来性能损失,但如果您在面对不同情况和要求时可能需要扩大选择范围,则可以替代使用filter()

参考文献:

答案 2 :(得分:-1)

使用eq()

尝试此代码
 if($('#pos_transaction_line_line input.item_number').eq(0).val() !== '');