Как я могу изменить вставленный текст? - PullRequest
2 голосов
/ 04 сентября 2010

Можно ли перехватить и изменить текст, который вставляется в текстовую область?

Если перехват невозможен, могу ли я изменить его после вставки? (Без изменения уже присутствующего текста в текстовой области.)

Ответы [ 3 ]

3 голосов
/ 04 сентября 2010

С 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 голос
/ 04 сентября 2010

Возможно перехватить keypress es, чтобы узнать, когда нажата CTRL + C , кэшировать текущий текст, затем на CTRL + C * keyup, проверьте текущее значение по отношению к кешированному, с помощью простой обработки текста вы можете узнать новый текст, делать все, что хотите, и обновлять соответствующим образом.

0 голосов
/ 04 сентября 2010

Лучший способ узнать, как это сделать, - дождаться вставки содержимого в текстовое поле, а затем дождаться нажатия клавиши или триггера. Это показано в коде ниже:

<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 () затем обновить значение текстовой области с обновленным значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...