2015-01-27 5 views
1

Я использую JQuery Plugin для проверки формы редактирования. Валидация отлично работает с формой создания, но она не работает с формой редактирования.JQuery Plugin не подтверждает форму

Мой HTML является

<body> 
<div class="container"> 
<h1 class="col-sm-offset-2">Edit Provider Details:</h1> 
<br /> 
<form class="form-horizontal" role="form" id="EditProviderDetailsForm" method="post"> 
<div class="form-group"> 
    <label class="col-sm-2 control-label labelfont">FIRST NAME:</label> 
     <div class="col-sm-6"> 
      <input type="text" class="form-control" autofocus="autofocus" placeholder="Enter the First Name" id="FirstName" data-bind="value:FirstName"> 
      </div> 
     <label class="col-sm-4 labelfont errorMsg" id="Err_FirstName">Enter the first name</label> 
</div> 
    <div class="form-group"> 
     <label class="col-sm-2 control-label labelfont">CONTACT NUMBER:</label> 
     <div class="col-sm-6"> 
      <input type="text" class="form-control" data- bind="value:ContactNumber" placeholder="Enter the Contact Number" id="ContactNumber" maxlength="13"> 
     </div> 
     <label class="col-sm-4 labelfont errorMsg" id="Err_ContactNum">Enter the Contact Number</label> 
    </div> 
    <div class="form-group"> 
     <label class="col-sm-2 control-label labelfont">EMAIL ADDRESS: </label> 
     <div class="col-sm-6"> 
      <input type="text" class="form-control" data- bind="value:ContactEmail" placeholder="Enter your email address"   id="EmailAddress"> 
     </div> 
     <label class="col-sm-4 labelfont errorMsg" id="Err_EmailAddress">Enter the Email Address</label> 
     </div> 
     <div class="form-group"> 
     <button type="submit" id="Update" class="btn btn-primary col-sm-1 col-  sm-offset-4">Update</button> 
     <button type="button" id="Cancel" class="btn btn-primary col-sm-   1">Reset</button> 
    </div> 
    </form> 
    </div>    
    </body> 

JavaScript является

$(document).ready(function() { 
jQuery.validator.addMethod("AcceptEmail", function (value, element) { 
return this.optional(element) || /^([\w\d\-\.]+)@{1}(([\w\d\-]{1,67})| ([\w\d\-]+\.[\w\d\-]{1,67}))\.(([a-zA-Z\d]{2,4})(\.[a-zA-Z\d]  {2})?)$/.test(value); 
}); 
$("#EditProviderDetailsForm").validate({ 
    onfocusout: function (element, event) { 
    this.element(element); 
    }, 
     onkeyup: function (element, event) { 
    if (event.which === 9 && this.elementValue(element) === '') { 
     return; 
    } else if (element.name in this.submitted) { 
    this.element(element); 
    } 
     }, 
     rules: 
{ 
    FirstName: { required: true, minlength: 2, maxlength: 20 }, 
ContactNumber: { required: true, minlength: 10, maxlength: 10 }, 
    ContactEmail: { required: true, AcceptEmail: true } 
}, 
     messages: { 
     FirstName: { 
     required: "Please enter your first name", 
     minlength: "Minimum 2 characters required", 
      maxlength: "Maximum 20 characters allowed" 
    }, 
     ContactNumber: { 
     required: "Please enter your Contact Number", 
     minlength: "Enter a 10 digit contact number", 
      maxlength: "Enter a 10 digit contact number" 
     }, 
       ContactEmail: { 
      required: "Please enter your Email Address", 
       AcceptEmail: "Please enter a valid email ID" 
      } 
     } 
    }); 
var Provider = { 
     SpecializationArray: ko.observableArray(Specialities), 
     ProviderID: ko.observable(Edit_data.ProviderID), 
     FirstName: ko.observable(Edit_data.FirstName), 
     ContactNumber: ko.observable(Edit_data.ContactNumber), 
    ContactEmail: ko.observable(Edit_data.ContactEmail) 
    } 
    ko.applyBindings(Provider); 
    }); 

Мои скрипты становятся загружены в _layout странице в общей папке MVC.

<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width" /> 

    <link rel="stylesheet" href="../../Content/bootstrap-theme.min.css" /> 
    <link rel="stylesheet" href="../../Content/bootstrap.min.css" /> 

    <title>@ViewBag.Title</title> 
    @Styles.Render("~/Content/css") 
    @Scripts.Render("~/bundles/modernizr") 


     <script type="text/javascript" src="../../Scripts/jquery-2.1.3.min.js"> </script> 
      <script type="text/javascript" src="../../Scripts/jquery-ui-1.11.2.min.js"></script> 
    <script type="text/javascript" src="../../Scripts/bootstrap.min.js"></script> 
    <script type="text/javascript" src="../../Scripts/jquery.unobtrusive-ajax.min.js"></script> 
     <script type="text/javascript" src="../../Scripts/jquery.validate.min.js"></script> 
     <script type="text/javascript" src="../../Scripts/knockout-3.2.0.js"></script> 
     </head> 

Здесь я затрудняюсь. Пожалуйста, направляйте меня в правильном направлении. В консоли нет ошибок.

+0

Насколько я могу судить, в вашем коде есть только 1 форму. –

+0

Я не размещал Create from, я только что упомянул, что он работает для Create from, но не работает для формы Edit, которую я разместил. У Create and Edit есть те же поля –

+0

Есть ли у них один и тот же идентификатор? –

ответ

1

К сожалению, вы пропустили одну из основ - jQuery Validate требует, чтобы каждый вход имел атрибут name. Просто скопируйте все свои атрибуты id в name, и ваш код будет работать.

Это описано в библиотеке wiki. Кроме того, в documentation:

атрибута имени является «» «требуется» «» для входных элементов, плагин проверки не работает без него. Обычно имя и id атрибуты должны иметь одинаковое значение.

+0

GodDammit !!!! .. Как я мог сделать такую ​​глупую ошибку. Я чувствую себя действительно глупо сейчас. Я внес изменения в свою форму «Создать», но забыл сделать то же самое в моей форме редактирования. Спасибо большое Ryley. –

Смежные вопросы