Обнаружьте вставленный текст с ctrl+v или щелчком правой кнопкой-> вставка

Как обнаружить, какой текст пользователь вставляет в текстовой области с JS?

20
задан randomwebdev 9 July 2010 в 09:49
поделиться

2 ответа

Вы можете использовать событие paste для обнаружения вставки в большинстве браузеров (особенно в Firefox 2) . Когда вы обрабатываете событие вставки, запишите текущий выбор, а затем установите короткий таймер, который вызывает функцию после завершения вставки. Затем эта функция может сравнивать длину и знать, где искать вставленный контент. Примерно так. Для краткости функция, которая выбирает текстовое поле, не работает в IE. См. Здесь: Как получить начальную и конечную точки выделения в текстовой области?

function getTextAreaSelection(textarea) {
    var start = textarea.selectionStart, end = textarea.selectionEnd;
    return {
        start: start,
        end: end,
        length: end - start,
        text: textarea.value.slice(start, end)
    };
}

function detectPaste(textarea, callback) {
    textarea.onpaste = function() {
        var sel = getTextAreaSelection(textarea);
        var initialLength = textarea.value.length;
        window.setTimeout(function() {
            var val = textarea.value;
            var pastedTextLength = val.length - (initialLength - sel.length);
            var end = sel.start + pastedTextLength;
            callback({
                start: sel.start,
                end: end,
                length: pastedTextLength,
                text: val.slice(sel.start, end)
            });
        }, 1);
    };
}

var textarea = document.getElementById("your_textarea");
detectPaste(textarea, function(pasteInfo) {
    alert(pasteInfo.text);
    // pasteInfo also has properties for the start and end character
    // index and length of the pasted text
});
19
ответ дан 30 November 2019 в 00:04
поделиться

Следующее может помочь вам

  function submitenter(myfield,e)
  {
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;
    if (keycode == //event code of ctrl-v)
    {
      //some code here
    }

  }

  <teaxtarea name="area[name]" onKeyPress=>"return submitenter(this,event);"></textarea> 
1
ответ дан 30 November 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: