我正在处理一个脚本,该脚本应返回所有输入元素,其类型设置为 text , number , email 或密码。我还希望它返回具有未定义类型(缺少属性)的所有输入字段。
有一种简单快捷的方法吗?
这是我到目前为止的实施:
inputFields = parentElem.find('input[type="text"], input[type="number"], input[type="email"], input[type="password"]');
//fields with missing type attr aren't selected
inputFieldsWithoutType = parentElem.find('input');
for (var j = 0; j < inputFieldsWithoutType.length; j++) {
if (inputFieldsWithoutType.eq(j).attr("type") === undefined || inputFieldsWithoutType.eq(j).attr("type") === null) {
inputFields = inputFields.add(inputFieldsWithoutType.eq(j)); //add to other inputFields
}
}
答案 0 :(得分:2)
选择没有input
属性的type
元素的简单方法是将属性选择器[type]
与:not()
伪类组合。
这样做,我们基本上否定了具有input
属性的所有type
元素。
$('input:not([type])');
上面的选择器将选择没有type
属性的所有元素,但是如果要选择没有type
属性的元素和,则为空/未定义{{1 }}属性(例如type
),然后您可以使用<input type="" />
方法:
.filter()
$inputFieldsWithoutType = $('input').filter(function () {
return !this.getAttribute('type');
});
$inputFieldsWithoutType = $('input:not([type])');
$inputFieldsWithoutTypeOrEmptyType = $('input').filter(function () {
return !this.getAttribute('type');
});
snippet.log('Input elements without a type attribute: ' + $inputFieldsWithoutType.length);
snippet.log('Input elements without a type attribute or an empty type: ' + $inputFieldsWithoutTypeOrEmptyType.length);
input{display: none;}