我有以下jquery绑定来侦听某些文本输入元素中的粘贴操作。函数内部是否有一种方法来获取对触发事件的实际元素的引用?我的目标是清除输入中的文本,如果有任何内容粘贴在其中,但是'这个'似乎没有问题。
编辑,代码已更新:
$(window).on("load", function() {
$('.watchable').bind("paste", function() {
alert('called!');
$(this).val('');
});
});
我正在使用JQuery 1.11.3。我看到警报,但文字没有清除。
这是一个jsFiddle演示。将任何文本粘贴到2个文本字段之一,警报显示,但文本字段中的文本不会被清除。
答案 0 :(得分:1)
<强>更新强>
如果您想在尝试粘贴时始终清除该字段,请参阅以下更新示例:
我的小提琴 - https://jsfiddle.net/8v08n4vx/
你的小提琴 - https://jsfiddle.net/jmap4jhy/
除非字段已为空,否则它们会阻止默认粘贴事件。
如果您想完全阻止它,只需删除if ($(this).val() !== ""){
声明。
我的小提琴 - https://jsfiddle.net/7Lsr7j78/
你的小提琴 - https://jsfiddle.net/pzb9s7s4/
(但是,您应该考虑可能的负面影响操纵无处不在的粘贴事件可能对用户体验产生影响)
$('.watchable').on('paste', function (e) {
//if field is not empty
if ($(this).val() !== "") {
// prevent default paste event
e.preventDefault();
// and clear field
$(this).val('');
}
});
当您使用的jQuery版本大于1.7时,您应该使用on
代替bind
。
我的小提琴 - https://jsfiddle.net/ae8ufz7y/
您的更新小提琴 - https://jsfiddle.net/83263j4e/
您只需添加以下JavaScript:
$('.watchable').on('paste', function () {
// on paste, clear input
$(this).val('');
});
以下是on
方法的jQuery文档:
http://api.jquery.com/on/
答案 1 :(得分:0)
最好我认为是禁用粘贴事件而不是清除文本
$('.some-el').on('paste', function() {
return false;
});
在粘贴事件中,无法捕获(和修改)输入值,因为输入与“粘贴”事件异步更改。
下一个事件可以捕获粘贴事件后的输入值
$('.some-el').on('input', function() {});