У меня есть форма, где пользователь может продолжать добавлять элементы в список.Когда они отправляются, чтобы отправить эту страницу, я хочу убедиться, что в этом списке есть элементы (а не отдельные элементы, поскольку они уже были проверены).Каждый элемент добавляется в новую строку таблицы с TR, имеющим дополнительный атрибут «action» ... поэтому он выглядит следующим образом:
<tr action="whatever">...</tr>
Я пытался добавить собственный addMethodэто вызвало функцию, которая посчитала бы число строк с действием в качестве атрибута:
$("#tableID").find("tr[action]").length
, и если эта длина больше 0, она возвращает true, в противном случае - false.
Thisотлично работает вне вызовов валидатора, но по какой-то причине он полностью пропускает его.
Я мог бы действительно использовать пример или некоторое представление о том, как заставить его проверять это правило, даже если оно не является элементом формы специально.
Сокращенный код:
* обратите внимание, что у меня уже есть настройки по умолчанию для сообщений, а что нет.
$.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;
}