Net文本框,并通过JavaScript/JQuery捕获粘贴事件以清除数据
我有一个asp.net TextBox控件,我希望能够捕获粘贴事件,清除用户粘贴的文本,并在TextBox控件中显示最终结果。我尝试了许多不同的方法,但没有一种能像预期的那样起作用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: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);
});
});