2017-10-10 215 views
0

我已經參考了文檔&堆棧溢出這個問題,我發現了一些解決方案&即使我試着相應的操作,但這些功能適用於我。所以最後我在這裏發佈了這個。

當我點擊提交,直接到submitHandler &不具有相應的驗證所定義的自定義方法select_not_default &我試圖把警報在這個自定義的方法,但它不調用意味着什麼毛病定製方法或jQuery包括我使用的訂單或jQuery版本

請幫我找到我在做錯的地方。與過去兩天混淆不清。

這是我已經包括了jQuery &驗證插件的順序:

<script type="text/javascript" src="http://192.168.1.8/cruise_booking/application/assets/js/lib/jquery-1.11.0.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/additional-methods.js"></script> 

下面是HTML形式:

<form action="http://192.168.1.8/cruise_booking/booking/availability" method="post" id="availability_form"> 
<!-- SIDEBAR AVAILBBILITY --> 
<div class="reservation-sidebar_availability bg-gray"> 

    <!-- HEADING --> 
    <h2 class="reservation-heading">YOUR RESERVATION</h2> 
    <!-- END/HEADING --> 
<select class="awe-select" name="source" id="source"> 
    <option value="0">Source</option> 
    <option value="1">Goa</option> 
    <option value="3">Mumbai</option> 
</select> 
<select class="awe-select" name="destination" id="destination"> 
    <option value="0">Destination</option> 
    <option value="2">Goa</option> 
    <option value="4">Mumbai</option> 
</select> 
<select class="awe-select" name="month" id="month"> 
    <option value="0">Month</option> 
    <option value="Oct/2017">Oct/2017</option> 
    <option value="Nov/2017">Nov/2017</option> 
</select> 
<dddc id="date_dd_container"> 
<select class="awe-select" name="date" id="date"> 
    <option value="0">Dates</option> 
    <option value="1">2017-10-12 09:30:00</option> 
</select> 
</dddc> 
<select class="awe-select" name="adults" id="adults"> 
    <option value="0">Adults</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 
<select class="awe-select" name="children" id="children"> 
    <option value="0">Children</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 
<select class="awe-select" name="infants" id="infants"> 
    <option value="0">Infants</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 
    <div class="vailability-submit"> 
     <input type="submit" name="search_btn" class="awe-btn awe-btn-13" value="Search"> 
    </div> 
</div> 
<!-- END/SIDEBAR AVAILBBILITY --> 
</form> 

下面是驗證形式的代碼。

$.validator.addMethod("select_not_default", function(value, element) { 
      var d = parseInt(value); 
      alert(d); 
      if(d == 0) 
      { 
       return false;   
      } 
      else 
       return true; 
      }); 

      $("#availability_form").validate({ 
      rules: { 
       source: { 
        required: true, 
        select_not_default: true 
       }, 
       destination: { 
        required: true, 
        select_not_default: true 
       }, 
       month: { 
        required: true, 
        select_not_default: true 
       }, 
       date: { 
        required: true, 
        select_not_default: true 
       } 
      }, 
      messages: { 
       source: { 
        required: "This field is required", 
        select_not_default: "Choose any other value than default one." 
       }, 
       destination: { 
        required: "This field is required", 
        select_not_default: "Choose any other value than default one." 
       }, 
       month: { 
        required: "This field is required", 
        select_not_default: "Choose any other value than default one." 
       }, 
       date: { 
        required: "This field is required", 
        select_not_default: "Choose any other value than default one." 
       } 
      }, 
      submitHandler: function(form) { 
        alert("hi"); 
       form.submit(); 
      } 
     }); 

回答

0

你可以做的是等待,直到document is ready有:

$(document).ready(function() { 

}); 

$(document).ready(function() { 
 
    $.validator.addMethod("select_not_default", function(value, element) { 
 
     var d = parseInt(value); 
 
     if(d == 0) 
 
     { 
 
      return false; 
 
     } 
 
     else 
 
      return true; 
 
    }); 
 

 
    $("#availability_form").validate({ 
 
     rules: { 
 
      source: { 
 
       required: true, 
 
       select_not_default: true 
 
      }, 
 
      destination: { 
 
       required: true, 
 
       select_not_default: true 
 
      }, 
 
      month: { 
 
       required: true, 
 
       select_not_default: true 
 
      }, 
 
      date: { 
 
       required: true, 
 
       select_not_default: true 
 
      } 
 
     }, 
 
     messages: { 
 
      source: { 
 
       required: "This field is required", 
 
       select_not_default: "Choose any other value than default one." 
 
      }, 
 
      destination: { 
 
       required: "This field is required", 
 
       select_not_default: "Choose any other value than default one." 
 
      }, 
 
      month: { 
 
       required: "This field is required", 
 
       select_not_default: "Choose any other value than default one." 
 
      }, 
 
      date: { 
 
       required: "This field is required", 
 
       select_not_default: "Choose any other value than default one." 
 
      } 
 
     }, 
 
     submitHandler: function(form) { 
 
      console.log("hi"); 
 
      form.submit(); 
 
     } 
 
    }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/additional-methods.js"></script> 
 

 
<form action="http://192.168.1.8/cruise_booking/booking/availability" method="post" id="availability_form"> 
 
<!-- SIDEBAR AVAILBBILITY --> 
 
<div class="reservation-sidebar_availability bg-gray"> 
 

 
    <!-- HEADING --> 
 
    <h2 class="reservation-heading">YOUR RESERVATION</h2> 
 
    <!-- END/HEADING --> 
 
<select class="awe-select" name="source" id="source"> 
 
    <option value="0">Source</option> 
 
    <option value="1">Goa</option> 
 
    <option value="3">Mumbai</option> 
 
</select> 
 
<select class="awe-select" name="destination" id="destination"> 
 
    <option value="0">Destination</option> 
 
    <option value="2">Goa</option> 
 
    <option value="4">Mumbai</option> 
 
</select> 
 
<select class="awe-select" name="month" id="month"> 
 
    <option value="0">Month</option> 
 
    <option value="Oct/2017">Oct/2017</option> 
 
    <option value="Nov/2017">Nov/2017</option> 
 
</select> 
 
<dddc id="date_dd_container"> 
 
<select class="awe-select" name="date" id="date"> 
 
    <option value="0">Dates</option> 
 
    <option value="1">2017-10-12 09:30:00</option> 
 
</select> 
 
</dddc> 
 
<select class="awe-select" name="adults" id="adults"> 
 
    <option value="0">Adults</option> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select> 
 
<select class="awe-select" name="children" id="children"> 
 
    <option value="0">Children</option> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select> 
 
<select class="awe-select" name="infants" id="infants"> 
 
    <option value="0">Infants</option> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select> 
 
    <div class="vailability-submit"> 
 
     <input type="submit" name="search_btn" class="awe-btn awe-btn-13" value="Search"> 
 
    </div> 
 
</div> 
 
<!-- END/SIDEBAR AVAILBBILITY --> 
 
</form>