Есть ли способ выбрать все элементы с определенным значением свойства?

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

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

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

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

Было бы здорово. Какие-либо предложения?

3 ответа

Решение

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

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

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

многоразовый :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);

Использовать этот:

$(':input').each( function() {
   return $(this).prop('valid');
});
Другие вопросы по тегам