您好我正在制作SSN格式化程序,这是我的代码
element.keyup(function(event) {
var inputField = event.target;
var val = inputField.value.replace(/[^0-9]/g, '');
var newVal = '';
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,4);
}
newVal += val;
inputField.value = newVal;
})
.keypress(function(event) {
if(event.target.value.length === 11) {
event.preventDefault();
}
});
手动输入数字可以正常工作 当我复制并粘贴一个数字,如12345678901234567890 文本框将其格式化为123-45-6789但是模型值仍然表示它是12345678901234567890,如果我退格从123-45-6789删除一个数字,那么模型值将变为123-45-678
我不确定发生了什么事?是因为keyup事件吗?不确定会不会感激帮助
答案 0 :(得分:1)
是的,因为keyup事件没有检测到你的粘贴。您应该使用输入事件:
element.on("input", function(event) {
var inputField = event.target;
var val = inputField.value.replace(/[^0-9]/g, '');
var newVal = '';
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,4);
}
newVal += val;
inputField.value = newVal;
})
.keypress(function(event) {
if(event.target.value.length === 11) {
event.preventDefault();
}
});