如何使用jquery选择所有输入,不提交,重置或按钮?

fre*_*ent 36 forms validation jquery input

我正在尝试选择除输入类型="提交/重置/按钮之外的所有输入元素

我试图像这样制作一个选择器:

inputSelector = 'input:not(input[type=button], input[type=submit], input[type=reset]), textarea, select';
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为提交按钮总是进入最终选择.

不知道上面有什么问题.

谢谢!

Mic*_*son 60

尝试将您的选择器修改为链式.not(...):

var inputs = $('input, textarea, select')
                .not(':input[type=button], :input[type=submit], :input[type=reset]');

$(inputs).each(function() {
    console.log(this.type);
});
Run Code Online (Sandbox Code Playgroud)

这使它(可以说)更容易阅读,并且应该按照您的预期工作.


Sea*_*dle 6

这个答案可能比迈克尔·罗宾逊的答案难以理解,但我发现它更简洁.not()您可以选择使用它:input来收集所有表单元素,然后使用:not()伪类过滤每个不需要的输入类型,而不是运行该函数.

来自jQuery的API文档(https://api.jquery.com/input-selector/):

所述:input选择器基本上选择所有表单控件.

类似"CSS"的选择器版本,:not()psuedo元素选择器是独立的,也可以在CSS 3中使用:

var inputs = $("#theForm").find(":input:not([type=button]):not([type=submit]):not([type=reset])");
Run Code Online (Sandbox Code Playgroud)