Крюк вставить событие в скрытую текстовую область
Я хочу подключить событие для вставки <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)