Javascript复制和粘贴不能正确格式化模型值
Javascript copy and pasting doesn't format model value correctly
我正在制作一个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文本框将其格式设置为123456789,但是模型值仍然显示为12345678901234567890,如果我从123456789中退格删除一个数字,那么模型值将变为12345678
我不知道发生了什么事?是因为keyup事件吗?不确定。
是的,这是因为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();
}
});
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- jQuery中是否内置了任何字符串格式化函数
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 将不在模型中的数据返回到mvc控制器
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- AngularJS:未聚焦时在输入中显示格式化的模型值
- AngularJS和输入类型=日期,如何格式化模型数据
- Rails-从两个模型中获取json-格式化json
- AngularJS获取ng模型中的格式化日期
- 格式化表单输入字段解除了我的ng模型的绑定
- 如何编写一个AngularJS指令来格式化模型值
- AngularJS指令来格式化模型值以供显示,但在模型中保留实际值
- Javascript复制和粘贴不能正确格式化模型值
- 骨干网重新格式化模型
- AngularJS$格式化程序和$parsers使用输入[数字]箭头错误地修改了模型