Крюк вставить событие в скрытую текстовую область - PullRequest
1 голос
/ 09 февраля 2010

Я хочу подключить событие вставки для <input type="text"> и принудительно вставить этот текст в скрытую текстовую область (затем я хочу проанализировать текст текстовой области и выполнить действие «вставить данные из excel в gridview»). Что-то вроде:

$('#input1').bind('paste', function(e) {
    // code do paste text to textarea instead of originally targeted input
});

Какой кросс-браузерный код я должен писать вместо комментариев?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 февраля 2010

Существует это хакерское решение, которое запускает событие focus в текстовой области, когда клавиши Ctrl и V или клавиши Shift и Insert не работают. [Да, это не работает для contextmenu -> прошлое]

$(document).ready(function(){
    var activeOnPaste = null;
    $('#input1').keydown(function(e){
        var code = e.which || e.keyCode;
        if((e.ctrlKey && code == 86) || (e.shiftKey && code == 45)){
            activeOnPaste = $(this);
            $('#textarea').val('').focus();
        }
    });
    $('#textarea').keyup(function(){
        if(activeOnPaste != null){
            $(activeOnPaste).focus();
            activeOnPaste = null;
        }
    });
});

Код позволяет указателю фокусироваться на текстовой области, когда клавиши Ctrl и V не работают. В этот момент текст не вставляется, он вставляется после запуска этой функции нажатия клавиш, поэтому вставленный текст отображается в текстовой области. После этого при включении этой текстовой области, #input1 будет сфокусировано.

Набирая это, я вижу, что может быть решение как для вставки клавиатуры, так и для мыши, используя диапазоны. Я тоже попробую кое-что с этим ...

0 голосов
/ 14 августа 2010

Вы должны привязать функцию к своему событию input-fields onChange () и копировать ее содержимое при каждом вызове этой функции, а затем обрабатывать данные. Если вы особенно заинтересованы в «вставленном» контенте (я не знаю, что вы там пытаетесь сделать, но, как правило, это признак плохой концепции в ситуации, когда вставляемый контент должен обрабатываться дополнительно), вы можете попробовать реализовать счетчик, который проверяет скорость ввода (например, более xx символов в секунду -> PASTE-Eventcall)

...