我確定這是我錯過的非常愚蠢的事情。我正在編寫一個小片段,為從輸入字段中抓取的字符串添加一個連字符。連字符只有在我們到達位置 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 。我比較困惑。有任何想法嗎?
被注入輸入字段的字符
慕碼人8056858
2021-06-30 07:47:21