2017-06-15 167 views
-1

我有一個頁面,在數據庫中添加新記錄是主要功能。在給出一個條件後該頁面正常工作。其中一個需要添加的字段是日期字段。該頁面有年份日期(2017,2018.2019)的下拉菜單。例如,如果下拉的選定年份爲2017年,則所有輸入都應爲2017年內的日期。小於或大於2017的輸入日期不應被驗證且不被接受。當dropdwon中的選定年份爲2018年或2019年時,此情況也是如此。接受的輸入應該與下拉列表中選定的年份相同。條件Jquery驗證

我最初使用jQuery驗證來做驗證。(我只是顯示在確認的日期部分)

這裏是下拉菜單中的HTML

<div class="col-sm-2" id="y_type" style="text-align:left;"> 
<select class="" style="width: 100%; display:inline-block;"> 
    @{ 
     DateTime datetime = DateTime.Now; 
     for (int i = 0; i <= 2; i++) 
     { 
      <option>@(datetime.AddYears(+i).ToString("yyyy"))</option> 
     } 
    } 
</select> 
</div> 

HOLIDAY_DATE在文本域的編號另一方面,

這裏是jquery這的確驗證之前

$("form").validate({ 
     rules: 
      { 
       "holiday_date[]": { 
        required: true 
        }, 
       }, 
      }, 


     errorClass: "invalid", 
     errorPlacement: function (error, element) { 
      $('#ResultDialog p').html("@hmis_resources.Message.msg_80005"); 
      $('#ResultDialog').modal(); 
     }, 
     submitHandler: function (form) { 
      ajaxFormSubmit(); 
     } 
    }); 

紅黴素一部分我最初做的是創建一個功能測試或比較日期的文本框,並且下拉的價值。但是這也行不通。我不知道它的放置

function testdate() { 

     $(".holidayBody tr").each(function (key, value) { 

      var holiday_date = $(value).find(".holiday_date").val(); 
      if (typeof holiday_date !== 'undefined') { 
       var year = holiday_date.substr(6, 4); 
       var month = holiday_date.substr(3, 2); 
       var days = holiday_date.substr(0, 2) 
       holiday_date = year + '/' + month + '/' + days; 

       var dropdownear = $('#y_type :selected').text(); 
       var result = year == dropdownear; 
       alert(result) 
      } 

     }) 
    } 

如果有更簡單的方法來實現這一點,我將不勝感激,如果你可以分享。

+0

你在你testdate獲得問題()函數或調用函數 – Rahul

+0

該功能只運行,即時通訊不知道是否邏輯是正確的,以恰當地驗證所選年份的日期輸入 – rickyProgrammer

+0

有沒有更好的方法來做到這一點?正確的輸出? – rickyProgrammer

回答

1

你應該在這個小提琴添加自定義方法的驗證,如:
Validating year from select input.

<script> 
    $(document).ready(function() { 

    var $select = $("select"); 

    //I added only the year to the drop down, you should change it to full date. 
    for (var i = 0; i < 3; i++) { 
     var year = new Date(); 
     year.setFullYear(year.getFullYear() + i); 
     $select.append("<option value=" + year.getFullYear() + " >" + year.getFullYear() + " </option>"); 
    } 

    // add the rule here 
    $.validator.addMethod("thisYearOnly", function(value, element, arg) { 

     var selectedYear = value; 
     var currentDate = new Date(); 
     var currentYear = currentDate.getFullYear(); 

     return currentYear == selectedYear; 

    }, "Must select this year"); 

    // configure your validation 
    $("form").validate({ 
     rules: { 
     mydate: { 
      thisYearOnly: true 
     } 
     } 
    }); 


    }); 
</script> 
+0

我會試試這個。謝謝 – rickyProgrammer

+1

我剛剛在上面的評論中看到,你不確定驗證輸入的邏輯是否與同一年有關,我會盡力幫助你。 –

+0

無法正常工作,在輸入建議代碼後,即使我還沒有輸入日期值,也立即生效 – rickyProgrammer