获取第一个空输入字段的名称 returns "undefined" (jquery)

Get name of first empty input field returns "undefined" (jquery)

我 运行 在获取第一个空输入字段的属性名称时遇到了问题。想不通,为什么他每次都returns"undefined"。

<input type="text" name="test_1" value="not empty">
<input type="text" name="test_2">
<input type="text" name="test_3" value="not empty">
<input type="text" name="test_4">
<script>alert($('input[value=""]').first().attr("name"));</script>

非常感谢您的帮助。

您要定位的元素没有 value 属性,因此没有与 [value=""] 选择器匹配的元素。您需要包含该属性,然后代码才能正常工作:

<input type="text" name="test_1" value="not empty">
<input type="text" name="test_2" value="">
<input type="text" name="test_3" value="not empty">
<input type="text" name="test_4" value="">

Example fiddle

如果您不想修改HTML(或无法修改),那么您需要使用filter()来查找value [=27]所需的元素=],始终可用。

var $emptyVal = $('input').filter(function() {
    return !this.value;
});

alert($emptyVal.first().attr("name"))

Example fiddle

您可以使用 :not[value] 来完成,如下所示。

alert($('input:not([value])').first().attr("name"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="test_1" value="not empty">
<input type="text" name="test_2">
<input type="text" name="test_3" value="not empty">
<input type="text" name="test_4">