Javascript 复制和粘贴无法正确格式化模型值

标签 javascript angularjs frontend javascript-objects dom-events

我正在制作一个 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 事件吗?没有把握。希望得到帮助。

最佳答案

是的,这是因为 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();
            }
         });

关于Javascript 复制和粘贴无法正确格式化模型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38882851/

相关文章:

javascript - 在条形之间添加空格/边距 - Chart.js

javascript - 通过 jQuery 在 chrome 扩展内容脚本中访问跨源 iframe 的 HTML?

javascript - CSRF 验证失败

javascript - 改变 ionic 负载

JavaScript 将数组元素移动到数组末尾

javascript - 读取 .json 文件并解析其数据?

javascript - 如何将 href URL 插入 Javascript var?

javascript - 如何在网页中添加自定义右键菜单?

javascript - 使用 $scope 属性绑定(bind) ng-include src

javascript - UseState 多个初始状态