Javascript 在文本进入文本框之前触发粘贴事件
假设我第一次将“bad”粘贴到文本框中 控制台输出(空字符串) 然后如果我粘贴一个类似“coder”的东西 控制台输出:错误Javascript 在文本进入文本框之前触发粘贴事件,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,假设我第一次将“bad”粘贴到文本框中 控制台输出(空字符串) 然后如果我粘贴一个类似“coder”的东西 控制台输出:错误 与“badcoder”框中的内容不同,我猜这是因为伪粘贴事件是在插入文本之前触发的。您可以使用粘贴事件而不是键控事件,该事件在有人粘贴时触发,但也只能在输入值更新后触发 更新 来自@Micah(和@JohnnyO)的好评。我发现了一个可行的解决方案: events: { "paste .youtube-url" : "addUrl" } addUrl: function
与“badcoder”框中的内容不同,我猜这是因为伪粘贴事件是在插入文本之前触发的。您可以使用
粘贴事件而不是键控事件,该事件在有人粘贴时触发,但也只能在输入值更新后触发
更新
来自@Micah(和@JohnnyO)的好评。我发现了一个可行的解决方案:
events: { "paste .youtube-url" : "addUrl" }
addUrl: function(){
console.log(this.$(".youtube-url").val());
这将设置超时,以便读取输入值的代码仅在堆栈中的其余代码运行后运行。我只在Chrome21上进行了测试,但是零时间超时似乎可以解决这个问题
演示:只有通过键盘粘贴时,@Jasper的答案才有效。当使用鼠标和关联菜单进行粘贴时,不会出现keyup事件。要监视的最佳事件是“输入”事件。不幸的是,对于9之前的IE版本,您需要注意'propertychange'事件,因为它们不支持'input'propertychange不会冒泡,因此您将无法像使用主干一样连接此事件,而是需要将其直接绑定到“.youtube url”元素 注意:正如#JohnnyO提到的那样,如果上下文菜单用于粘贴,则不会触发keyup
事件。@Micah捕捉得好。我用另一个方法更新了我的答案。事件:{“change.youtube url”:“addUrl”}
可能是另一个选项,但事件在焦点离开文本框之前不会触发。
$('input').on('paste', function () {
var that = this;
setTimeout(function () {
alert(that.value);
}, 0);
});