2013-12-12 99 views
1

我想在ASP.NET MVC4中使用JQuery驗證。我的意圖是當頁面出現任何錯誤時,應該在控件之前顯示。但是錯誤始終顯示在控件的下一行(行)上。JQuery驗證錯誤放置

這裏是我的JS,cshtml文件的片段。

$(function() { 
$('#Transaction1Screen1').validate({ 
    errorElement: "div", 
    errorLabelContainer: '#errorMessages', 
    errorPlacement: function (error, element) { 
     error.insertBefore(element); 
    } 
}); 

$("#TextBox1").rules("add", { email: true, messages: { email: 'Verify the e-mail in TextBox1' } }); 

}); 

束映射

@Scripts.Render("~/bundles/jqueryval") 
@Scripts.Render("~/bundles/Common") 
@Styles.Render("~/bundles/themesCss") 
@Scripts.Render("~/bundles/jqueryUI") 
@Scripts.Render("~/bundles/otherControls") 
@Scripts.Render("~/bundles/ClientResources") 
@Scripts.Render("~/bundles/Transaction1Screen1") 

HTML內容

@Html.TextBoxFor(m => m.TextBox1, new Dictionary<string, object> { { "id", "TextBox1" }, { "name", "TextBox1" }, { "Class", "txtfield controlWidth" }, { "jsValidation", "checkEMailAddr" } }) 
<br /> 
@Html.ValidationMessageFor(m => m.TextBox1) 
+0

不是MVC自動創建調用'.validate()'方法的代碼嗎?此方法不能被調用兩次,因爲所有後續調用都被忽略。看看***呈現的***頁面代碼來驗證。 – Sparky

回答

0

嘗試HTML內容

@Html.ValidationMessageFor(m => m.TextBox1) 
@Html.TextBoxFor(m => m.TextBox1, new Dictionary<string, object> { { "id", "TextBox1" }, { "name", "TextBox1" }, { "Class", "txtfield controlWidth" }, { "jsValidation", "checkEMailAddr" } }) 
+0

這工作。但是我的意圖是通過腳本來定義行爲。我可以控制腳本而不是HTML。所以,無論在哪裏,HTML.Validation對象都可以顯示,我想顯示腳本中定義的錯誤消息。 –

0

嘗試這樣初始化驗證:

$(function(){ 
    $("#Transaction1Screen1").validate({ 
    errorElement: "span", 
    errorPlacement: function (error, element) { 
      error.insertBefore(element); 
    } 
    }); 
}); 

errorElement屬性意味着你用什麼元素來包裝你的消息。

如果您使用「div」作爲錯誤元素,元素將被置於新行。

enter image description here

希望這是有幫助的。

+0

似乎沒有errorElement更改的影響。無論我使用什麼,錯誤顯示在@ Html.ValidationMessageFor(m => m.TextBox1) –