Есть ли способ выбрать все элементы с определенным значением свойства? - PullRequest
4 голосов
/ 10 мая 2011

Я создаю довольно простой плагин с jQuery, который проверяет форму. Когда элемент оценивается как действительный, я запускаю

$(this).prop("valid", false);

В некоторых случаях я хочу заблокировать отправку формы, если что-то недопустимо. По сути, я ищу способ выбрать все элементы, где допустимое свойство имеет значение false? Я собираюсь перебрать все релевантные элементы и проверить, нет ли ложных показаний, или я выбрал селектор jQuery? Что-то вроде:

$("input[valid=false]");

Хорошо бы. Есть предложения?

Ответы [ 3 ]

5 голосов
/ 10 мая 2011

Многоразовые :invalid jQuery фильтр селектора

Вы можете написать простой фильтр селектора:

$.extend($.exp[":"], {
    invalid: function(element) {
        return element.valid === false;
    }
});

Затем просто объедините его с любым селектором, который вы используете, чтобы получить ваши элементы, например:

// all invalid inputs
$(":input:invalid");
// or all invalid text boxes
$("input[type=text]:invalid");

Вот и все.

Давайте поместим все это в простой плагин, который можно легко включить в код скрипта или в файл скрипта (для целей повторного использования на нескольких страницах, а также на несколькихприложения, если вы используете те же функции проверки):

(function($) {

    $.extend($.exp[":"], {
        invalid: function(element) {
            return element.valid === false;
        }
    });

})(jQuery);
5 голосов
/ 10 мая 2011

Попробуйте это ...

$('input').filter(function() {
   return this.valid === false; 
});

Он вернет все input элементы (вы имеете в виду :input?), Где его свойство valid равно false(обратите внимание на строгое равенство).

0 голосов
/ 10 мая 2011

используйте это:

$(':input').each( function() {
   return $(this).prop('valid');
});
...