Как использовать JQuery, чтобы выбрать все входы, которые не представляют, сброс или кнопку? - PullRequest
36 голосов
/ 17 февраля 2012

Я пытаюсь выбрать все элементы ввода, кроме типа ввода = "отправить / сброс / кнопка

Я попытался сделать селектор вот так:

inputSelector = 'input:not(input[type=button], input[type=submit], input[type=reset]), textarea, select';

Но это не работает, потому что кнопки отправки всегда делают окончательный выбор.

Есть идеи, что не так с вышесказанным.

Спасибо!

Ответы [ 2 ]

58 голосов
/ 17 февраля 2012

Попробуйте изменить селектор на цепочку .not(...), например:

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

$(inputs).each(function() {
    console.log(this.type);
});

Это облегчает чтение (возможно) и должно работать так, как вы ожидаете.

6 голосов
/ 19 декабря 2016

Этот ответ, возможно, труднее читать, чем ответ Майкла Робинсона, но я считаю его более кратким.Вместо запуска функции not() вы можете выбрать для нее, используя :input, чтобы собрать все элементы формы, а затем отфильтровать псевдоклассом :not() для каждого нежелательного типа ввода.

Из документации API jQuery (https://api.jquery.com/input-selector/):

Селектор :input в основном выбирает все элементы управления формы.

Версия, подобная "CSS", селекторы псевдо-элемента :not()отдельный, и может использоваться в CSS 3:

var inputs = $("#theForm").find(":input:not([type=button]):not([type=submit]):not([type=reset])");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...