我有一个文本框,并希望确保以YYYYMMDD格式输入日期。下面将停止所有其他字符,然后输入数字。我的Javascript生锈失败,如何确保输入到文本框中的文本也以“ 202”开头
function chkNum(event, msg) {
if (!(event.which >= 48 && event.which <= 57)) {
document.getElementById(msg).innerHTML = "Invalid date format";
return false;
} else {
document.getElementById(msg).innerHTML = "";
return true;
}
}
<input name="remdel<%=orderno%>" type="number" min="0" step="1" id="remdel<%=orderno%>" value="" size="10" onkeypress="return chkNum(event,'error')"
答案 0 :(得分:0)
为什么不使用正则表达式。 SO上有太多可用资源和许多奇特的方式。
这是根据您的要求的基本非生产指南: 它需要一些工作,我已经将正则表达式分开以提供清晰度... 您还可以添加检查以确保第5位和第6位数字介于1到12之间,并且第7位和第8位数字不大于31,只是为了使其更加简单。
<html>
<head>
<title></title>
</head
<body>
<input id="txtDate" type="text" />
<span id="lblResult"></span>
<script type="text/javascript">
function Validatekey(e) {
// Get the key that was pressed.
// Add the key pressed to our input because it technically isnt there until after this method completes
var dtValue = document.getElementById("txtDate").value + e.key;
// Check that user pressed a number ie. 0 1 2 3 4 5 6 7 8 9
if (!new RegExp("^[0-9]+$").test(dtValue)) {
// Regect if not a number then reject.
e.preventDefault();
}
// Check for 8 digits
if (!new RegExp(/^[0-9]{1,8}$/).test(dtValue)) {
// Regect if not a number then reject.
e.preventDefault();
}
// Check if starts with 202 and the rest of the number
if (!new RegExp(/^(202)([0-9]{5})$/).test(dtValue)) {
document.getElementById("lblResult").innerHTML = false;
}else{ document.getElementById("lblResult").innerHTML = true; }
}
// Attach event handler to our input
document.getElementById("txtDate").addEventListener("keypress", Validatekey);
</script>
</body>
</html>