Это может быть то, что вы ищете.Я сделал следующие корректировки в вашем исходном коде:
- использовал переменную для вызова элемента "dob" для сохранения строк кода
- добавил прослушиватель событий, потому что это предпочтительнее, чем объявлять егов вашем HTML (так скажем, модным разработчикам)
- изменил событие "keyup" на "keydown", потому что я думаю, что оно более надежно
- добавил maxlength для ввода, чтобы пользователь не мог добавитьбольше цифр, чем дата должна иметь
- добавлен заполнитель для ввода, так что пользователь будет знать, какой формат он должен иметь возможность вводить
- изменил ваш RegEx для поиска - вместо /
NB. Я не добавил проверку ошибок, чтобы удостовериться, что пользователь ввел «реальную» дату (то есть «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" />