2016-09-09 5 views
0

現在のプロジェクトのフォームに対してjQueryの検証を使用する際に問題が発生しています。jQueryの問題のバリデーションが要素に対して機能しない

私はそれが私が行方不明または何か小さいと確信していますが、それが発生している理由を理解するためにsemをすることはできません。

私は、コンソールデバッガーで取得していますエラーがあります。オブジェクトは、プロパティまたはメソッド「検証」をサポートしていません

バンドルコンフィギュレーションファイル:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js")); 

     bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.validate*")); 

     bundles.Add(new ScriptBundle("~/bundles/custom").Include(
        "~/Scripts/ContactForm.js")); 

コードスニペットは以下の通りです:

Scripts.Render( "〜/バンドル/ jqueryの")@
<form action="@Url.Action("UpdateContactInformation", "ContactController")" method="post" role="form" class="form-horizontal" id="contactForm"> 
<input type='hidden' name='csrfmiddlewaretoken' value='brGfMU16YyyG2QEcpLqhb3Zh8AvkYkJt' /> 
<!-- First Name Form Field--> 
<div class="form-group required"> 
    <label class="col-md-2 control-label">First Name</label> 
    <div class="col-md-4"> 
     <input class="form-control" id="id_firstName" maxlength="75" name="txtFirstName" placeholder="First Name" required="required" title="" type="text" /> 
    </div> 
</div> 
<!-- Last Name Form Field--> 
<div class="form-group required"> 
    <label class="col-md-2 control-label">Last Name</label> 
    <div class="col-md-4"> 
     <input class="form-control" id="id_lastName" maxlength="75" name="txtlastName" placeholder="Last Name" required="required" title="" type="text" /> 
    </div> 
</div> 
<!-- Title Form Field--> 
<div class="form-group required"> 
    <label class="col-md-2 control-label">Title</label> 
    <div class="col-md-4"> 
     <input class="form-control" id="id_title" maxlength="75" name="txtTitle" placeholder="Title" required="required" title="" type="text" /> 
    </div> 
</div> 
<!-- Address Form Field--> 
<div class="form-group required"> 
    <label class="col-md-2 control-label">Address</label> 
    <div class="col-md-4"> 
     <input class="form-control" id="id_address" maxlength="75" name="txtAddress" placeholder="Address" required="required" title="" type="text" /> 
    </div> 
</div> 
<!-- City Form Field--> 
<div class="form-group required"> 
    <label class="col-md-2 control-label">City</label> 
    <div class="col-md-4"> 
     <input class="form-control" id="id_city" maxlength="75" name="txtCity" placeholder="City" required="required" title="" type="text" /> 
    </div> 
</div> 
<!-- State Form Field--> 
<div class="form-group required"> 
    <label class="col-md-2 control-label">State</label> 
    <div class="col-md-4"> 
    <div class="dropdown"> 
     <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenuStates" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 
      Select State 
      <span class="caret"></span> 
     </button> 
     <ul class="dropdown-menu" id="statesDropDownMenu" aria-labelledby="dropdownMenuStates"> 

     </ul> 
    </div> 
     </div> 
</div> 
<!-- Zip Form Field--> 
<div class="form-group required"> 
    <label class="col-md-2 control-label">ZipCode</label> 
    <div class="col-md-4"> 
     <input class="form-control" id="id_zipCode" maxlength="75" name="txtZipCode" placeholder="ZipCode" required="required" title="" type="number" /> 
    </div> 
</div> 
<!-- Email Primary Form Field--> 
<div class="form-group required"> 
    <label class="col-md-2 control-label">Email Primary</label> 
    <div class="col-md-4"> 
     <input class="form-control customEmail" id="id_emailPrimary" maxlength="75" name="txtEmailPrimay" placeholder="Email Primary" required="required" /> 
    </div> 
</div> 
<!-- Email Secondary (optional) Form Field--> 
<div class="form-group"> 
    <label class="col-md-2 control-label">Email (Optional)</label> 
    <div class="col-md-4"> 
     <input class="form-control" id="id_emailSecond" maxlength="75" name="txtEmailSecond" placeholder="Email (Optional)" title="Email (Optional)" type="email" /> 
    </div> 
</div> 
<!-- Email Third (optional) Form Field--> 
<div class="form-group"> 
    <label class="col-md-2 control-label">Email (Optional)</label> 
    <div class="col-md-4"> 
     <input class="form-control" id="id_emailThird" maxlength="75" name="txtEmailThird" placeholder="Email (Optional)" title="Email (Optional)" type="email" /> 
    </div> 
</div> 

<div class="form-group"> 
    <div class="col-sm-offset-2 col-sm-10"> 
     <button type="submit" class="btn btn-primary"> 
      <span class="glyphicon glyphicon-user"></span> Submit Contact Info 
     </button> 
    </div> 
</div> 

@ Scripts.Render( "〜/ bundles/jqueryval"); @ Scripts.Render( "〜/ bundles/custom"); //私は

に$ .validate.AddMethodを()を追加しようとしているファイルが含まれていることはここでContact.js

$.validator.addMethod(
     "customEmail", 
     function (value, element) { 
      var re = new RegExp("/^@{0,2}\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*@{0,2}​‌‌​​$/"); 
      return this.optional(element) || re.test(value); 
     }, 
     "Please enter a valid email address." 
    ); 

$(document).ready(function() { 

    console.log("Were here........."); 

    // populateStatesDropDown(); 



    $('#contactForm').validate({ // initialize the plugin 
     rules: { 
      txtZipCode: { 
       required: true, 
       numeric: true 
      }, 
      txtEmailPrimay: { 
       required: true, 
       customEmail:true 
      }, 
      txtEmailSecond:{ 
       required:false, 
       customEmail:true, 
      }, 
      txtEmailThird: { 
       required: false, 
       customEmail:true 
      } 
     } 
    }); 



    populateStatesList(); 

}); 

function populateStatesList() { 
    var url = "Contact/GetStates"; // Don't hard code your url's! 
    //$("#province_dll").change(function() { 
    var $statesDropDownMenu = $("#statesDropDownMenu"); // Use $(this) so you don't traverse the DOM again 
    var listItems = ''; 
     $.getJSON(url, function (response) { 
      $statesDropDownMenu.empty(); // remove any existing options 
      console.log(response); 
      $.each(response, function (index, item) { 
       console.log("Now - " + item); 

       listItems += "<li>" + item + "</li>";     
      }); 

      $statesDropDownMenu.html(listItems); 
     }); 
    //}); 
} 
+1

あなたのページに 'jquery.validate.min.js'がロードされていないようです。あなたのネットワークタブをチェックし、そのファイルの状態が200であることを確かめてください。あるいは、あなたの '

宣言に構文エラーがあるかもしれません。ソースコードを確認し、ASPが期待しているHTMLを生成していることを確認してください。 – MonkeyZeus

+0

さて、私のContact.jsファイルがロードされる前に既に広告がロードされていることを確認しました。しかし、ありがとう。 jquery.validate.jsを含むバンドルをロードした後にロードします – Casey

+0

デバッガがcontact.jsファイルを取得したことを示すので、$ .validator特別なメソッドが渡されますが、$でプラグインを初期化しようとすると失敗します( '#contactForm')。validate({})行。 – Casey

答えて

-2

あなたは余分なコンマを持つためのコードです。

txtEmailSecond:{ 
     required:false, 
     customEmail:true, // Here 
}, 
+0

ああ、私に見せてください。私はそれがその種の見落としであることを心配していました。 – Casey

+1

Javascriptには、そのような末尾のカンマで問題はありません。 2つのコンマを見た場合、予期しないトークンエラーが発生します。 – MonkeyZeus

+0

私は答えた直後にそれについて考えました。バンドルの設定ページを表示するために私の質問を更新して、期待どおりに順番にロードされない理由を見てみましょう。 – Casey

関連する問題