第一个带有 jQuery 的空输入字段

first empty input field with jQuery

本文关键字:输入 字段 jQuery 第一个      更新时间:2023-09-26

我正在尝试查找具有特定类的第一个空输入字段(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;
  }
});

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

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

您发现,更新<input>的值会更新其值propertyHTMLInputElement.value),但不会更新value属性(<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);

但是,上述方法确实存在以下事实:它将检索与选择器匹配的所有元素,然后在filter()方法中循环遍历这些元素,然后再返回页面中的第一个匹配项。

这确实会降低性能,但在面对不同的情况和要求时可能需要扩大选择范围时,可以作为使用 each() 的替代方法。

引用:

  • eq() .
  • filter() .

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

我们在这里使用的选择器是属性选择器,它看不到对 value 属性所做的更改,这就是发生这种情况的原因。

使用 eq() 尝试此代码

 if($('#pos_transaction_line_line input.item_number').eq(0).val() !== '');