【发布时间】:2018-11-06 05:46:36
【问题描述】:
我有一个文本框,它只允许用户以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
【问题讨论】:
-
作为旁注,我会考虑转换日期服务器端。这增加了可用性。
-
@KuebelElch15 有什么想法或链接可以让我探索这种可能性吗?
标签: javascript jquery html internet-explorer textbox