如何修改粘贴的文本?

问题描述 投票:0回答:4

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

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

jquery html dom
4个回答
1
投票

使用 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
投票

也许拦截

keypress
es,了解何时按下 CTRL+C,缓存当前文本,然后在 CTRL+C
keyup
,使用简单文本检查当前值与缓存值处理你可以知道新的文本,并做你想做的事,并相应地更新。


0
投票

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

<script language="javascript">

function testfunction()
{

 // This function will execute whenever the content of 

}
</script>

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

如果您想监视文本区域的任何更改,可以使用以下代码。它每 1/10 秒检查一次文本区域的值是否有任何更新。

<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() 时修改文本区域的值,然后用更新后的值更新文本区域的值。


0
投票

您可以使用

event.preventDefault();
阻止浏览器的默认粘贴。

然后读取剪贴板数据。

然后修改剪贴板数据并自行粘贴设置文本区域(或输入)值。

    <textarea id="myTextarea" placeholder="Paste text here..."></textarea>

    <script>
        document.getElementById('myTextarea').addEventListener('paste', function (event) 
        {
            // Prevent the default paste behavior
            event.preventDefault();

            // Get the clipboard data
            const clipboardData = (event.clipboardData || window.clipboardData);
            let pastedText = clipboardData.getData('text/plain');

            // Modify the pasted text as needed
            // Example: Convert to uppercase
            pastedText = pastedText.toUpperCase(); 

            // Insert the modified text into the textarea
            let textarea = event.target;
            let currentText = textarea.value;
            let selectionStart = textarea.selectionStart;
            let selectionEnd = textarea.selectionEnd;

            const newText = currentText.slice(0, selectionStart) + pastedText + currentText.slice(selectionEnd);

            textarea.value = newText;
        });
    </script>
© www.soinside.com 2019 - 2024. All rights reserved.