亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

被注入輸入字段的字符

被注入輸入字段的字符

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

    // ...


查看完整回答
反對 回復 2021-07-01
  • 1 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號