У меня есть текстовое поле, которое позволяет пользователю вводить дату только в формате mm-dd-yyyy
. Если дата действительна, пользователь сможет переместить фокус из текстового поля, но если он недействителен, фокус должен оставаться внутри текстового поля, пока пользователь не исправит его. В настоящее время я использую регулярное выражение для проверки ввода текстового поля, и я могу успешно сохранять фокус внутри текстового поля в случае неправильной даты. Проблема, с которой я сталкиваюсь, заключается в том, что даже когда я исправляю неверную дату, фокус не выходит за пределы текстового поля.
var dateCheck = function() {
var value = $("#txtbox1").val()
if (/^(0[1-9]|1[0-2])-(0[1-9]|1\d|2\d|3[01])-(19|20)\d{2}$/.test(value)) {
$("#txtbox1").blur();
return true;
}
else {
$("#txtbox1").focus().on('blur', function () {
$(this).focus();
return false;
});
}
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" size="12" class="form-control" onfocusout="dateCheck()" id="txtbox1"/>
P.S .: Использование Datepicker не является частью требования, было бы намного проще, я знаю. Будем благодарны за любые предложения по этому поводу.
Редактировать : Я нашел работающее решение и обновил код выше, но этот код работает только в Chrome, а не в IE11