<!DOCTYPE html>
<html>
<head>
<title>限制输入格式</title>
</head>
<body>
<input type="text" id="dateInput" onkeypress="limitInput(event)" onkeyup="formatDate(event)">
<script>
function limitInput(event) {
const input = event.target;
const maxLength = 8; // 最大允许输入 8 个数字
if (input.value.replace(/[^0-9]/g, '').length >= maxLength && event.keyCode !== 8) { // keyCode 为 8 表示 Backspace 键
event.preventDefault();
}
}
function formatDate(event) {
const input = event.target;
let value = input.value.replace(/[^0-9]/g, ''); // 移除非数字字符
if (value.length > 8) {
value = value.substr(0, 8); // 限制输入长度为 8
}
if (value.length >= 5) { // 处理年份和月份
value = value.replace(/^(\d{4})(\d{0,2})(\d{0,2})/, function(match, p1, p2, p3) {
// 限制月份最小为 01,最大为 12
const month = p2 ? Math.min(Math.max(parseInt(p2, 10), 1), 12).toString().padStart(2, '0') : '';
// 限制日期最小为 01,最大为 30
const date = p3 ? Math.min(Math.max(parseInt(p3, 10), 1), 30).toString().padStart(2, '0') : '';
return p1 + (month ? '-' + month : '') + (date ? '-' + date : '');
});
}
input.value = value;
}
</script>
</body>
</html>
————————————————
版权声明:本文为CSDN博主「黯然神伤888」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dante1987/article/details/133267906