2011-04-15 78 views
0

我的表单代码是这样的(MVC 2)jQuery验证问题。错误消息是在错误的地方

<% using (Html.BeginForm()){ %> 
    <%: Html.Serialize("regData", Model)%> 
    <div class="RegistrationGroup"> 
    <p><label for="FirstName">First name</label> <%: Html.EditorFor(x => x.FirstName) %><span class="ErrorMessage"></span></p> 
    <p><label for="LastName">Last name</label> <%: Html.EditorFor(x => x.LastName) %><span class="ErrorMessage"></span></p> 
    </div> 
    <div class="RegistrationGroup"> 
    <input name="nextButton" type="image" src="../../Images/button_next.png" alt="Neste" /> 
    </div> 
<% } %> 
在我的剧本

然后弹出,我有以下几点:

<script type="text/javascript"> 
$(function() { 
    $("#Email").focus(); 
    $("form").validate({ 
    rules: { 
     FirstName: { 
     required: true, 
     minlength: 2 
     }, 
     LastName: { 
     required: true, 
     minlength: 2 
     } 
    }, 
    errorPlacement: function (error, element) { 
     error.appendTo(element.next()); 
    } 
    }); 
}); 
</script> 

我的问题是,所有的验证错误出现在标签和文本框之间,看起来很糟糕。我想把错误信息放在ErrorMessage范围内,这个范围恰好放在实际的输入元素之后,并且我尝试了errorPlacementerrorPlacement部分内容进行验证。无论如何,错误消息始终显示在同一个点上。

这看起来对我来说是正确的,所以如果有人知道我在这里做错了转弯,我会很感激。

+0

@mu - 它提供了以下HTML:'<输入类=“文本框单line“id =”FirstName“name =”FirstName“type =”text“value =”“/>''',所以这是一个相当普通的文本框。 – 2011-04-15 06:10:38

+0

它按预期工作在这里:http://jsfiddle.net/mzMER/它可以是CSS,你也可以发布一些CSS。 – dioslaska 2011-04-15 06:21:23

+0

@dioslaska - 这可能是CSS,因为我在Chrome中的开发人员工具中验证了验证后的HTML,并且似乎在ErrorMessage范围内添加了以下标记: 2011-04-15 06:28:20

回答

1

如果您不希望错误出现标签标签里面,把你的errorPlacement功能:

element.next().append(error.text()); 
+0

工作作为魅力:)非常感谢! – 2011-04-15 06:40:31

+0

其实我有点快。现在,所有的错误信息都会被追加并永远不会被清除。相同的验证错误实际上可能会多次相继显示。我用html替换append,然后错误消息不会追加,而是按需要替换,但是当输入合法时,验证错误不会被清除。任何想法如何清除? – 2011-04-15 06:48:45

+0

@dioslaka - 我现在恢复使用标签并正确使用css样式。当它工作正常时,不需要尝试聪明:) – 2011-04-15 06:52:18