2015-11-02 2 views
-1

Может ли кто-нибудь сказать мне, что не так с этим кодом? Я пытаюсь проверить дату на дате datepicker на mm/dd/yyyy, когда разрешаю вход пользователя. Я использовал код проверки, который был предложен мне, и у меня есть другой код, чтобы убедиться, что всплывающий календарь исчезнет, ​​когда они курсируют или нажмите клавишу табуляции (если они вообще не помещают дату).ASP.net MVC Datepicker с датой проверки

$(function() { 
     $('.datepicker2').datepicker() 
     .on('changeDate', function (ev) { 
      $('.datepicker2').datepicker('hide'); 
     }); 
     ForceDatePickerFormat(); 
    }); 

    function ForceDatePickerFormat(dateValue) { 
     $('.datepicker2').on('keydown', function (e) { 
      var keyCode = e.keyCode || e.which; 
      if (keyCode == 9) { 
       $('.datepicker2').datepicker('hide'); 
      } 
     }); 
     $(".datepicker2").on("blur", function (e) { 
       var selectedDate = dateValue; 
       if(selectedDate == '') 
       return false; 

       var regExp = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; //Declare Regex 
       var dateArray = selectedDate.match(regExp); // is format OK? 

       if (dateArray == null){ 
       return false; 
       } 

       month = dateArray[1]; 
       day= dateArray[3]; 
       year = dateArray[5];   

       if (month < 1 || month > 12){ 
        return false; 
       }else if (day < 1 || day> 31){ 
        return false; 
       }else if ((month==4 || month==6 || month==9 || month==11) && day ==31){ 
        return false; 
       }else if (month == 2){ 
       var isLeapYear = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); 
       if (day> 29 || (day ==29 && !isLeapYear)){ 
        return false 
       } 
      } 
      return true; 
     }); 
    } 
+0

Что DatePicker плагин вы используете? И почему вы не просто используете проверку на стороне клиента? –

+0

Я использую bootstrap-datepicker.js. Я довольно новичок в asp.net ... Я использую DataFormatString = "{0: MM/dd/yyyy} в модели, но клиент хочет заставить пользователя ввести 4-значный год. Какие другие варианты? Что конкретно вы подразумеваете под проверкой на стороне клиента? Я попробовал regex, но не смог найти строку, которая сработала. Кроме того, клиент хотел раскрывающийся календарь. Я приветствую любую помощь! –

+0

Если свойство, связанное с именем 'DateTime', и вы активировали проверку на стороне клиента (включая 'jquery.validate.js' и' jquery.validate.unobtrusive.js') и включили '@ Html.ValidationMessageFor (m => m.yourDateProperty)', тогда все это обрабатывается из коробки (вам это не нужно) –

ответ

0

следуйте ссылкам:

http://formvalidation.io/examples/jquery-ui-datepicker/

$(function() { 
 

 
    $("#jQueryValidateTest").validate(); 
 

 
    $("[type=date]").datepicker({ 
 
    onClose: function() { 
 
     $(this).valid(); 
 
    } 
 
    }); 
 
});
.valid { 
 
    background: green; 
 
    color: #fff; 
 
} 
 
.error { 
 
    background: red; 
 
    color: #fff; 
 
}
<form id="jQueryValidateTest"> 
 
    <input type="date" required> 
 
</form>​

+0

Спасибо! Я тоже буду использовать это. Извините, этот вопрос был помечен как «бесполезный». Я действительно потратил часы и часы на исследования. Я просто учился ... Я думал, для чего это была доска. –

+0

Это имеет значение, если я использую bootstrap datepicker или jquery ui datepicker? И, следует ли использовать последнюю версию? –