Javascript输入可在日期中自动添加“ /”

时间:2018-10-20 21:56:52

标签: javascript date

我找到了下面的代码,该代码自动将'/'添加到带有日期的输入中。我想知道是否有办法添加“ /”而不是添加“ /”?我对javascript不太满意,不胜感激。

<input id="dob" type="text" onkeyup="getAge()" />

<script type="text/javascript">
function getAge() {
document.getElementById("dob").value=document.getElementById("dob").value.replace(/^(\d\d)(\d)$/g,'$1/$2').replace(/^(\d\d\/\d\d)(\d+)$/g,'$1/$2').replace(/[^\d\/]/g,'');
</script>

1 个答案:

答案 0 :(得分:1)

这可能是您要寻找的。我对您的原始代码进行了以下调整:

  • 使用了一个变量来调用“ dob”元素以保存代码行
  • 添加了事件侦听器,因为这比在HTML中声明事件侦听器更好(例如,高级开发人员)
  • 将“ keyup”事件更改为“ keydown”,因为我认为它更可靠
  • 在输入中添加了maxlength,因此用户添加的数字不能超过日期的数量
  • 在输入中添加了占位符,因此用户将知道他们应该能够输入哪种格式
  • 已将正则表达式更改为搜索-而不是/

我没有添加错误检查以确保用户输入的“真实”日期(即“ 02-31-2018”)不会被捕获。

var dob = document.getElementById("dob");
dob.addEventListener("keydown", getAge);
function getAge() {
	dob.value = dob.value.replace(/^(\d\d)(\d)$/g,"$1-$2").replace(/^(\d\d\-\d\d)(\d+)$/g,"$1-$2").replace(/[^\d\-]/g,'');
}
<input id="dob" maxlength="10" placeholder="mm-dd-yyyy" type="text" />