JQuery проверить errorPlacement на одном элементе - PullRequest
7 голосов
/ 25 марта 2011

Такое чувство, что этот вопрос задавался ранее, но, похоже, нет вопросов, которые могли бы решить мою проблему, поэтому заранее извиняюсь.

Поскольку я использую ASP.NET и не могу предсказать названиеэлементы управления, которые я хочу проверить, я устанавливаю правила проверки jquery следующим образом:

jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} });

Вместо:

$ ('# aspnetForm'). validate ({параметры и правила});// для которого требуются имена элементов управления

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

jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} });

Однако я не могу заставить метод работать, когда добавляю опцию errorPlacement.Я также попробовал следующее:

jQuery('#aspnetForm').validate({ errorPlacement: function (error, element) {
            if (element.hasClass('sfRadioList')) {
                error.insertAfter(element.parent("ul"));
            } 
        }
        });
jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} });

Но это все еще не сработало.Что я могу сделать, чтобы установить размещение только одного элемента?

Заранее спасибо higgsy

1 Ответ

18 голосов
/ 25 марта 2011

Вот код, который работал для меня ...

errorPlacement: function(error, element) {
if (element.attr("name") == "pdfEmailAddress")
    {
        error.insertAfter("ul.slinks");
    }
    else
    {
        error.insertAfter(element);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...