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

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

Asp.Net TextBox 并通過 JavaScript/JQuery 捕獲粘貼事件以清理數據

Asp.Net TextBox 并通過 JavaScript/JQuery 捕獲粘貼事件以清理數據

慕妹3146593 2023-03-24 13:51:56
我有一個 asp.net TextBox 控件,我希望能夠捕獲粘貼事件,清除用戶粘貼的文本并在 TextBox 控件中顯示最終結果。我嘗試了許多不同的方法,但沒有一種方法能按預期工作。<asp:TextBox ID="editor">...</asp:TextBox> 我需要一個適用于所有瀏覽器的解決方案。我現在正在處理這樣的事情。$(document).ready(function() {        var $editor    = $('#editor');        /// Control used for testing, the control with ID editor will be overwritten         /// with the cleaned text.        var $clipboard = $('<textarea />').insertAfter($editor);                 $editor.on('paste, keydown', function() {              var $self = $(this);                          setTimeout(function(){                     var $content = $self.text();                                 $clipboard.val($content);            },100);     });});如果 editor 是一個 div 標簽的 ID,這將完美地工作,但如果 editor 是一個 TextBox 控件的 ID,這將不起作用。我得到了 TextBox 的舊內容,而不是用戶粘貼的內容。任何人都可以解釋為什么上面的代碼可以在 DIV 標簽上工作,但不能在 TextBox 控件上工作?
查看完整描述

3 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

Asp 控件在運行時更改 id,因此您無法捕獲給定的 id。

因此,要捕獲實際 ID:

選項1。

var $editor = ("#<%= editor.ClientID %>");

選項2,使用ClientIDMode="static"。

<asp:TextBox ID="editor" ClientIDMode="static">...</asp:TextBox>


查看完整回答
反對 回復 2023-03-24
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

綁定到粘貼事件,您必須設置超時以確保填充粘貼的值。原因是,粘貼事件不是立即發生的(4 毫秒),因此超時迫使隊列進入概念順序。


$("#foo").on('paste', function(e) { // <---- e, event


  var pastedData = e.target.value;

  setTimeout(function() {

    console.log($(e.currentTarget).val());

  }, 0);


});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<textarea id="foo" rows="20" cols="50">

I am a working textbox example

</textarea>


查看完整回答
反對 回復 2023-03-24
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

我已經弄清楚如何捕獲粘貼的文本,這里是一個更新的 jquery 函數


$(document).ready(function() {


        var $editor    = $('#editor');

        

        $editor.on('paste, keydown', function() {

              var $self = $(this);            

              setTimeout(function(){ 

                    var $oldContent = $self.text(); // The old content in the control

                    var $pastedContent = $editor.val(); // Pasted content


                    // Clean data to meet requirements

                    $pastedContent = #pastedContent.replace(/(\r\n|\n|\r|\s+)/gm, " ");

                    $editor.val($pastedContent);

            },100);

     });

});

感謝所有提供幫助的人。


查看完整回答
反對 回復 2023-03-24
  • 3 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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