Можете ли вы проверять наборы полей индивидуально, используя плагин проверки jquery от bassassistance? - PullRequest
3 голосов
/ 18 января 2010

У меня есть форма, которая использует плагин проверки, но мне нужно проверить отдельную часть формы, используя немного разные критерии - большинство полей помещают ошибку в следующую ячейку таблицы, но для одного поля мне нужна ошибка находится где-то еще.

Это функция проверки для основных полей формы:

jQuery("#form2").validate({
    rules: {
        street: {
            required: true,
            minlength: 5
        },
        city: {
            required: true,
            minlength: 3
        },
        state: {
            required: true
        },
        zip: {
            required: true,
            minlength: 5
        }
    },
    messages: {
        street: {
            required: "Please enter your address",
            minlength: "Address is too short"
        },
        city: {
            required: "Please enter your town/city",
            minlength: "Town/City is too short"
        },
        state: {
            required: "Please enter your county"
        },
        zip: { 
            required: "Please enter your postcode",
            minlength: "Postcode is too short"
        }
    },
    errorPlacement: function(error, element) {
            error.appendTo(element.parent("td").next("td"));
    }
}); // end validate

По сути, я также хотел бы проверить этот набор полей отдельно, поэтому для errorPlacement можно использовать другое значение:

    jQuery("#elecfields").validate({
    rules: {
        sup1: {
            minlength: 2
        }
    },
    messages: {
        sup1: {
            minlength: "must be 2 digits"
        }
    },
    errorPlacement: function(error, element)
    {
        // different error placement is needed here
    }

}); // end elecfields validate

elecfields - это набор полей внутри формы 2, но, похоже, это не работает.

Кажется, что errorPlacement должно применяться ко всем полям в форме, но у меня есть только одно поле, которое нуждается в ошибках, где-то еще. Есть идеи, как этого достичь? Любая помощь очень ценится.

Ответы [ 2 ]

3 голосов
/ 18 января 2010

Ты прав.Обработчик errorPlacement применяется ко всей форме, но вы также можете иметь логику для обработки ошибки по-разному в определенных ситуациях.Например, вы можете посмотреть на свойство элемента direclty и посмотреть, какие элементы находятся под вопросом, или вы можете отфильтровать их по общему родителю - в вашем случае - fieldset.Пример:

$("#form").validate({
    /* */
    errorPlacement: function(error, element)
    {
        if( element.closest("#subFieldSet").length ) {
            /* special handling */
        } else {
            /* generic handling */
            error.insertAfter(element);
        }
    }
});
0 голосов
/ 01 февраля 2011

Как насчет использования нескольких форм для разных разделов?

Таким образом, у вас могут быть разные правила для разных форм, и вы не будете связываться с опцией errorPlacement.

...