2011-04-15 103 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