我确定这是我错过的非常愚蠢的事情。我正在编写一个小片段,为从输入字段中抓取的字符串添加一个连字符。连字符只有在我们到达位置 4 时才会添加,所以我可以输入 123 并且连字符不会出现。如果我输入 1234,它会自动更改为 1234-。问题在于处理粘贴,在 jQuery 内的某处(在我的代码执行后),它向字段中注入了更多字符。我的方法很简单。我查看 keyup 和 keydown 事件,检查输入并插入连字符。对于粘贴,我什至查看粘贴,抓住字符串,拆分它并根据是否存在连字符插入一个连字符。$('[id$="field"]').on('paste', function (event) { var element = this; var text = event.originalEvent.clipboardData.getData('text').split(''); if (text.length > 4 && text.indexOf('-') < 0) { text.splice(4, 0, '-'); $(element).val(text.join('')); }});$('[id$="field"]').bind('keyup keydown', function (event) { var input = $(this).val(); if (input.length === 4 && event.keyCode !== 8) { $($(this).val(input + '-')); }});在keyup与keydown听众的作品就好了。如果我在 12345 中粘贴,当我$(element).val(text.join(''));在 jQuery 执行它的操作时,当我点击了额外的字符时,我最终会得到 1234-5 。我比较困惑。有任何想法吗?
1 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
由于您通过直接更新输入框的值来覆盖典型的“粘贴”行为,因此您需要防止“默认”粘贴行为。
$('[id$="field"]').on('paste', function (event) {
event.preventDefault();
// ...
添加回答
举报
0/150
提交
取消