我确定这是我错过的非常愚蠢的事情。
我正在编写一个小片段,为从输入字段中抓取的字符串添加一个连字符。连字符只有在我们到达位置 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 。
我比较困惑。
有任何想法吗?
牧羊人nacy
相关分类