Проблема с ошибкой размещения JQuery проверки - PullRequest
1 голос
/ 07 марта 2011

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

HTML:

<form>
    <fieldset id="Initial>
         <div class="section">
             <h3>Do you wish to add <span>Market Depth,</span> the ability to view <span>Nasdaq Level II data</span> and <span>futures market depth?</span></h3>
                    <span class="row"><label><input type="checkbox" name="MKDPT" id="MKDPT">Add Market Depth</label></span>
          </div>
     </fieldset>
</form>

Я хочу добавить элемент ошибки "p" после класса spanстрока

js:

....
errorElement: "p",
errorPlacement: function(error, element) 
{
    if( element.closest("#final_step").length ) {
        error.appendTo( element.parent("li"));
    } else if( element.closest("#EX_AGREEMENT").length ) {
        element.closest('li').after(error);
    } else if( element.closest("#Initial").length ) {
        error.insertAfter( element.parent("div"));
    } else {
        error.insertAfter(element.parent("li"));
    }
},
....

следует отметить, что на входе #MKDPT получен класс ошибки

1 Ответ

3 голосов
/ 08 марта 2011

Я думаю, что вы только один персонаж.Ваша функция errorPlacement вводится и входит в следующий блок if:

/*Snip */
else if( element.closest("#Initial").length ) {
        error.insertAfter( element.parent("div"));
    } 

Проблема в том, что element.parent("div") возвращает пустой объект jQuery, поскольку parent() только смотриту непосредственного родителя элемента контекста.

Если вы замените эту строку на element.parents("div") ( примечание parents, а не parent), все будет в порядке:

$("form").validate({
    errorElement: "p",
    errorPlacement: function(error, element) {
        if (element.closest("#final_step").length) {
            error.appendTo(element.parent("li"));
        } else if (element.closest("#EX_AGREEMENT").length) {
            element.closest('li').after(error);
        } else if (element.closest("#Initial").length) {
            error.insertAfter(element.parents("div"));
        } else {
            error.insertAfter(element.parent("li"));
        }
    }
});

Здесь это работает (при условии, что флажок является обязательным элементом): http://jsfiddle.net/uLRw9/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...