错误放置jquery验证有问题

时间:2011-03-07 20:27:53

标签: jquery validation jquery-validate

我有几个不同的长形式字段集,每个字段集的结构略有不同。我有一个我无法显示错误消息

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 个答案:

答案 0 :(得分:3)

我认为你只是一个角色。您正在输入errorPlacement功能并输入以下if块:

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

问题是element.parent("div")产生一个空的jQuery对象,因为parent()只查看了context元素的 immediate 父级。

如果您将该行替换为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/