Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Net文本框,并通过JavaScript/JQuery捕获粘贴事件以清除数据_Javascript_Jquery_Asp.net - Fatal编程技术网

Net文本框,并通过JavaScript/JQuery捕获粘贴事件以清除数据

Net文本框,并通过JavaScript/JQuery捕获粘贴事件以清除数据,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我有一个asp.net TextBox控件,我希望能够捕获粘贴事件,清除用户粘贴的文本,并在TextBox控件中显示最终结果。我尝试了许多不同的方法,但没有一种能像预期的那样起作用 <asp:TextBox ID="editor">...</asp:TextBox> 我需要一个解决方案,在所有浏览器工作 我现在正在处理类似的事情 $(document).ready(function() { var $editor = $('

我有一个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,那么它就不能工作。我得到的是文本框的旧内容,而不是用户粘贴的内容


有人能解释一下为什么上面的代码只在DIV标签上工作,而不在TextBox控件上工作吗?

Asp控件在运行时更改id,因此您无法捕获给定的id

因此,要捕获实际id:

备选案文1

var$editor=

选项2,使用clientmode=static

绑定到粘贴事件,必须设置超时以确保填充粘贴的值。原因是,粘贴事件不是立即的4ms,因此超时会强制队列进入概念顺序


$foo.on'paste',function{/我已经了解了如何捕获粘贴的文本,下面是一个更新的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);
     });
});

感谢所有参与帮助的人。

请将您在文本编辑方面所做的工作包括在内,好吗?您是否尝试过使用正则表达式?我认为有一些可能是相关的。我还没有做过任何工作,因为我没有捕获粘贴到文本框中的内容。一旦我知道我正在获取粘贴的数据,我将使用正则表达式清理。清理粘贴的数据不会是问题。如果你发现自己在一个SO问题中列出了要完成的任务,那么你应该在发布之前尝试执行这些步骤。如果你正在努力寻找解决方案,那么这些项目中的每一项都应该作为一个单独的问题发布,但你应该真正尝试一下,然后发布挂起的内容你的问题。@wahwah,这正是我所做的,这篇文章清楚地说明了问题的症结所在。我对你的文章进行了编辑,使其更加简洁。如果你的项目还有其他问题,请将每个项目作为单独的问题发布。我尝试了选项1,但没有解决问题。至于选项2,我已经有ClientMode=staticYes,Uncaught TypeError:$editor.on不是一个function@MichaelBrown代码中的$editor是一个变量,.on是一个jquery函数-so$$editor.onjQuery版本?我修复了异常,但得到了相同的结果。我找到了下面的解决方案。
$(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);
     });
});