У меня есть форма, в которой пользователь может добавлять элементы в список. Когда они отправляются на отправку этой страницы, я хочу убедиться, что в этом списке действительно есть элементы (а не отдельные элементы, поскольку они уже были проверены). Каждый элемент получает добавлен в новую строку в таблице с TR, имеющим дополнительный атрибут «действие» ... так это выглядит так:
<tr action="whatever">...</tr>
Я пытался добавить настраиваемый addMethod, который вызывал функцию, которая будет подсчитывать количество строк с действием в качестве атрибута:
$("#tableID").find("tr[action]").length
, и если эта длина больше 0, возвращается истина, в противном случае - ложь.
Это отлично работает вне вызовов валидатора, но по какой-то причине полностью пропускает его .
Я действительно мог бы использовать пример или некоторое представление о том, как заставить его проверять это правило, даже если это не является конкретно элементом формы.
Уменьшенный код:
* обратите внимание, что у меня уже есть значения по умолчанию установлены для сообщений, а что нет.
$.validator.addMethod("validProductList", function (value, element) {
return this.optional(element) || validateProductList();
}, "You have no products in your list");
$("#processForm").click(function () {
$("#pageForm").validate({
submitHandler: function () {
$("#errors").hide();
//processPage();
},
rules: {
//other rules,
validProductList: true
}
});
});
function validateProductList() {
var isValid = false;
var useList = $("#tblAddedProducts").find("tr[action]").length;
if (useList > 0) { isValid = true; }
return isValid;
}