如何修改粘贴的文本?

时间:2010-09-03 23:14:46

标签: jquery html dom

是否可以拦截和修改粘贴到textarea的文本?

如果无法拦截,可以在粘贴后修改吗? (不修改textarea中已存在的文本。)

3 个答案:

答案 0 :(得分:3)

使用jQuery:

    jQuery(function($){
      $('#your_element').bind('paste', function(event){
        event.preventDefault();
        var clipboardData = event.originalEvent.clipboardData.getData('text/plain');
        console.log(clipboardData);
      }); 
     }      
    });

适用于IE和Webkit。使用Firefox,您可能必须使用它:

http://intridea.com/2007/12/16/faking-onpaste-in-firefox?blog=company

答案 1 :(得分:1)

可能拦截keypress es,知道何时按下 CTRL + C ,缓存当前文本,然后在 CTRL + C keyup,根据缓存的值查看当前值,通过简单的文本处理,您可以了解新文本,并根据需要执行任何操作,并相应地进行更新。

答案 2 :(得分:0)

我知道如何执行此操作的最佳方法是等待粘贴文本字段的内容,然后等待keyup或keydown触发器。这显示在下面的代码中:

<script language="javascript">

function testfunction()
{

 // This function will execute whenever the content of 

}
</script>

<textarea onkeyup="testfunction()" onkeydown="testfunction()"></textarea>

如果要监视textarea以进行任何更改,以下代码将执行此操作。它会每1/10秒检查一次textarea的值以进行任何更新。

<textarea id="testfield"></textarea>

<script language="javascript">

var textarea = document.getElementById('testfield');
var textval = '';

function monitor()
{

 if(textval != textarea.value)
 {

  textval = textarea.value;
  testfunction();

 }

 setTimeout('monitor()', 100);

}

function testfunction()
{

 // This function will get executed whenever the value of the text area is altered (at most within 1/10th of a second)

}

monitor();
</script>

在这两种情况下,您可以在testfunction()时修改textarea的值,然后使用更新的值更新textarea的值。