我有一些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;
有人可以解释它是如何工作的,并向我展示如何将其转换为我的日期格式吗?
您发布的代码从中删除所有非数字字符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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句