Есть ли способ выбрать все элементы с определенным значением свойства?
Я строю довольно простой плагин с 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');
});