在JavaScript中实现日期输入框的光标自动跳转和数字替换功能,可以通过监听输入框的输入事件,并根据输入内容自动调整光标位置和格式化日期。以下是一个优雅的实现方案:
首先,创建一个日期输入框:
<input type="text" id="dateInput" placeholder="MM/DD/YYYY" maxlength="10">
接下来,编写JavaScript代码来实现光标自动跳转和数字替换:
document.getElementById('dateInput').addEventListener('input', function (e) {
let input = e.target;
let value = input.value.replace(/\D/g, ''); // 移除非数字字符
let formattedValue = '';
// 根据输入长度格式化日期
if (value.length > 0) {
formattedValue += value.substring(0, 2); // 月份
}
if (value.length > 2) {
formattedValue += '/' + value.substring(2, 4); // 日期
}
if (value.length > 4) {
formattedValue += '/' + value.substring(4, 8); // 年份
}
// 更新输入框的值
input.value = formattedValue;
// 自动跳转光标
if (value.length === 2 || value.length === 5) {
input.setSelectionRange(formattedValue.length + 1, formattedValue.length + 1);
} else {
input.setSelectionRange(formattedValue.length, formattedValue.length);
}
});
replace(/\D/g, '')
: 移除非数字字符,确保输入框中只包含数字。formattedValue
: 根据输入的长度动态格式化日期字符串。setSelectionRange
: 用于设置光标的位置。当输入长度为2或5时,光标会自动跳到下一个分隔符(/
)之后。keydown
),以处理用户按下删除键或退格键时的行为。假设用户输入12312023
,输入框会自动格式化为12/31/2023
,并且光标会自动跳到下一个位置。
createTextRange
等兼容性代码。通过这种方式,你可以优雅地实现日期输入框的光标自动跳转和数字替换功能,提升用户体验。