2016-12-08 59 views
0

我知道有這樣的負載和負載問題,但沒有一個真的有幫助。。爲什麼.valid()總是返回TRUE?

我在一個頁面上有兩種形式(一些字段是共享的),一次只會提交一種形式。我認爲這是因爲有些字段是共享的,但我從頁面中完全刪除了第二種形式,並且錯誤仍然存​​在。

我正在實現自定義驗證程序,但是當我調用.valid()時,它總是返回TRUE,即使是tho規則另有說明。

目前我只有第一種驗證方式(我沒有繼續,因爲它失敗了)。

$('#driver-form').validate({ 
rules:{ 
    FirstName: { 
     required:true, 
     minlength: 2, 
    }, 
    LastName: { 
     required:true, 
     minlength: 2, 
    }, 
    Email: { 
     required: true, 
     email: true 
    }, 
    PhoneNum: { 
     required: true, 
     exactlength: 11, 
    },   
    Password: { 
     required: true, 
     minlength: 6, 
     symbol: true 
    } 
},messages:{ 
    Firstname: { 
     required: "Please enter your firstname", 
     minlength: "Firstname should contain more that 2 characters" 
    }, 
    LastName: { 
     required: "Please enter your lastname", 
     minlength: "Lastname should contain more that 2 characters" 
    }, 
}}); 

這裏是形式:

@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form", @id = "driver-form" })) 
{ 
    @Html.HiddenFor(m => m.IsGarage, new { @class = "_HdnIsGarage" }) 

    <div class="registration-form" id="driver-registration-form"> 
     @Html.AntiForgeryToken() 
     <hr /> 
     @Html.ValidationSummary("", new { @class = "text-danger" }) 
     <div> 
      @Html.Kendo().TextBoxFor(m => m.FirstName).HtmlAttributes(new { placeholder = "First Name" }) 
     </div> 
     <div> 
      @Html.Kendo().TextBoxFor(m => m.LastName).HtmlAttributes(new { placeholder = "Last Name" }) 
     </div> 
     <div> 
      @Html.Kendo().TextBoxFor(m => m.Email).HtmlAttributes(new { placeholder = "E-mail", @type = "e-mail" }) 
     </div> 
     <div> 
      @Html.Kendo().TextBoxFor(m => m.PhoneNum).HtmlAttributes(new { placeholder = "Phone Number" }) 
     </div> 
     <div> 
      @Html.Kendo().TextBoxFor(m => m.Password).HtmlAttributes(new { placeholder = "Password", @type = "password" }) 
     </div> 
     <div> 
      @*@Html.Kendo().TextBoxFor(m => m.ConfirmPassword).Name("pw").HtmlAttributes(new { placeholder = "Password" }))*@ 
     </div> 
     <div> 
      @Html.Kendo().Button().Name("Register").Content("Register").HtmlAttributes(new { type = "button", onclick = "Javascript:driverRegister()" }) 
     </div> 
    </div> 
} 

這裏的jQuery被調用時,點擊 '註冊':

 function driverRegister() { 
     debugger; 
     var test1 = $('#driver-form') 
     var test = $('#driver-registration-form input'); 
     alert(test.valid()) 
     if (test.valid() == true) { 
      $('#driver-form').submit(); 
     } 
    } 
+0

你也使用validate.unobtrusive?如果是這樣,請在調用'.valid()'之前嘗試'$ .validator.unobtrusive.parse($('#driver-form'))''。 – Stuart

+1

對於初學者假設您使用JQuery驗證插件,'.valid()'函數驗證表單不是輸入字段。 - [檢查這裏](https://jqueryvalidation.org/valid/) –

+0

@Stuart,我有用戶和js抱怨.parse, NikhilNanjappa,我驗證輸入不同的形式,它完美的作品 –

回答

0

好,用的$(document)包裝驗證功能。就緒(function(){}); 似乎解決了這個問題。謝謝大家誰幫助:)

相關問題