选择缺少类型属性的HTML <input />元素 - jQuery

时间:2015-12-13 00:11:28

标签: javascript jquery html dom

我正在处理一个脚本,该脚本应返回所有输入元素,其类型设置为 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
  }
}

1 个答案:

答案 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;}