2011-08-23 60 views
3

我使用ASP.NET MVC 3 Razor,帶有jQuery驗證插件來構建註冊表單。 所以,我包括在此:MVC3 Razor/JQuery客戶端驗證不工作

<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"> </script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> 

我已在我的web.config以下:

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 

我的剃刀形式如下:

@model bop.Web.Models.ProfileModel 

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<h2>Page title</h2> 
@Html.ValidationSummary(true) 
@using (Html.BeginForm("Register", "Profile", FormMethod.Post, new { id = "RegForm" })) 
{ 
    <fieldset> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.companyName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.companyName) 
      @Html.ValidationMessageFor(model => model.companyName) 
     </div> 
     <div> 
     ... here other input fields ... 
     </div> 
     <a href="#" id="nextbtn1">GO TO STEP 2</a> 
    </fieldset> 

在底部我有:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#nextbtn1').click(function() { // bind click event to link 
      $("#RegForm").validate(); 
      if ($("#RegForm").valid()) { 
       var $tabs = $('#tabs').tabs(); // first tab selected 
       $tabs.tabs('select', 1); // select second tab 
       return false; 
      } 
     } 
    } 
</script> 

我在點擊事件上使用了綁定,因爲我的註冊表單被分割爲3個選項卡,因此我將在第三步中執行提交。

的問題是,當我點擊「轉到步驟2」按鈕,我得到這個錯誤:

Run-time error in Microsoft JScript: Object does not support this property or method 'validate' 

很多預先感謝幫助的指針。

回答

2

檢查,如果形式是有效的,你必須先進行驗證,所以插入行if ($("#RegForm").valid()) {前進行以下檢查:

$("#RegForm").validate(); 
+0

感謝counsellorben, 只是這樣做,但現在我得到類似的錯誤: 運行 - Microsoft JScript中的實時錯誤:對象不支持此屬性或方法'驗證' – User907863

+0

解決了這個問題。 我有包含在_Layout.cshtml文件中的jquery.validate.js。如果我直接在我的View中包含該腳本,那麼所有工作都可以正常工作除此之外,我認爲將所有腳本包含在佈局中是正確的,而不是將它們插入到每個視圖中。任何想法?非常感謝。 – User907863

+0

這很奇怪。我將這些腳本包含在我的_Layout.cshtml文件中,並沒有出現問題。腳本是否位於佈局文件中的''元素中? – counsellorben