2017-06-15 122 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