Крюк вставить событие в скрытую текстовую область

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

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

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

Благодарю.

2 ответа

Решение

Есть это хакерское решение, которое запускает 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 не работают. В этот момент текст не вставляется, он вставляется после срабатывания этой функции нажатия клавиш, поэтому вставленный текст отображается в текстовой области. После этого, на keyup на этой текстовой области, #input1 будут сосредоточены.

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

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

Другие вопросы по тегам