Ответ 1
Вид взлома, но:
$("#id").bind('paste', function(e) {
var ctl = $(this);
setTimeout(function() {
//Do whatever you want to $(ctl) here....
}, 100);
});
Я знаю, что мы можем использовать событие вставки связывания, как показано ниже:
$('#id').bind('paste', function(e) {
alert('pasting!')
});
Но проблема в том, что он будет вызывать перед вставкой вставки. Я хочу, чтобы функция запускалась после правого щелчка → вставлять текст, вставленный в поле ввода, чтобы я мог получить доступ к вставленному значению внутри функции обработчика событий.
.change()
Событие также не помогает. В настоящее время я использую событие .keyup()
, потому что мне нужно показать количество оставшихся символов при вводе этого поля ввода.
Вид взлома, но:
$("#id").bind('paste', function(e) {
var ctl = $(this);
setTimeout(function() {
//Do whatever you want to $(ctl) here....
}, 100);
});
Почему бы не использовать событие ввода?
$("#id").bind('input', function(e) {
var $this = $(this);
console.log($this.val());
});
Это остановит пользователя на любом вклеивании, копировании или разрезе с помощью клавиатуры:
$("#myField").keydown(function(event) {
var forbiddenKeys = new Array('c', 'x', 'v');
var keyCode = (event.keyCode) ? event.keyCode : event.which;
var isCtrl;
isCtrl = event.ctrlKey
if (isCtrl) {
for (i = 0; i < forbiddenKeys.length; i++) {
if (forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) {
return false;
}
}
}
return true;
});
Этот будет делать то же самое для событий мыши:
$("#myField").bind("cut copy paste",function(event) {
event.preventDefault();
});
Несмотря на то, что вышеупомянутый не будет препятствовать правым щелчкам, пользователь не сможет вставлять, вырезать или копировать из этого поля.
Чтобы использовать его после события, как вы задавались вопросом по вашему вопросу, вы должны использовать JavaScript Timing Event
setTimeout(function() {
// your code goes here
}, 10);
У меня была такая же проблема, я решил реплицировать действие вставки с помощью javascript и вместо этого использовать этот вывод:
var getPostPasteText = function (element, pastedData) {
// get the highlighted text (if any) from the element
var selection = getSelection(element);
var selectionStart = selection.start;
var selectionEnd = selection.end;
// figure out what text is to the left and right of the highlighted text (if any)
var oldText = $(element).val();
var leftPiece = oldText.substr(0, selectionStart);
var rightPiece = oldText.substr(selectionEnd, oldText.length);
// compute what the new value of the element will be after the paste
// note behavior of paste is to REPLACE any highlighted text
return leftPiece + pastedData + rightPiece;
};
См. В документе document.selection.createRange IE не указаны ведущие или завершающие пустые строки для источника функции getSelection
.