我有一些javascript将用户输入自动格式化为SSN(ddd-dd-dddd) 我无法转换此脚本以支持日期格式(mm / dd / yyyy)
var val = this.value.replace(/\D/g, '');
var newVal = '';
if (val.length > 4) {
this.value = val;
}
if ((val.length > 3) && (val.length < 6)) {
newVal += val.substr(0, 3) + '-';
val = val.substr(3);
}
if (val.length > 5) {
newVal += val.substr(0, 3) + '-';
newVal += val.substr(3, 2) + '-';
val = val.substr(5);
}
newVal += val;
this.value = newVal;
是否有人能够解释这是如何工作的,并告诉我如何将其转换为我的日期格式?
答案 0 :(得分:1)
您发布的代码会删除this.value
中的所有非数字字符,然后根据字符串的长度在正确的位置添加“ - ”。
这是我尝试更容易理解的日期版本:
function insertString(originalString, newString, index) {
return originalString.substr(0, index) + newString + originalString.substr(index);
}
function formatDate(dateString) {
var cleanString = dateString.replace(/\D/g, ''), // Removes all non-numeric characters
output = cleanString.substr(0, 8), // Limit to 8 digits
size = dateString.length;
if (size > 4)
output = insertString(output, '/', 4);
if (size > 2)
output = insertString(output, '/', 2);
return output;
}
然后在你的处理程序中你只需要这样做:
this.value = formatDate(this.value);