如果用户在输入文本元素中写入或粘贴字符串,我正尝试通过Backbone
将数据发送到服务器。
在Backbone事件中,我认为这样的事情但它不起作用:
events:{
"click .close":"closeResults",
"keypress input":"fetchData",
"paste input":"fetchData"
},
fetchData:function (e) {
var $this = this;
window.setTimeout(function () {
if ($.trim(e.target.value).length >= 3) {
console.log(e.target.value);
$this.collection.fetch({data: {limit: 10, term:$.trim(e.target.value)}});
}
}, 0);
}
答案 0 :(得分:6)
如果您切换为使用keyup
事件而不是keypress
和paste
,则可以通过键盘(⌘ + v
或Ctrl + v
)进行粘贴并正常打字。
如果您使用input
事件,即使您右键单击并粘贴(除了与keyup
相同的预期行为外),它也会有效。
有关input
的更多信息:
https://developer.mozilla.org/en-US/docs/Web/API/window.oninput
答案 1 :(得分:1)
使用keyup和mouseleave(而不是输入)事件处理程序,以便它也可以在IE中工作
另见How to detect right mouse click + paste using JavaScript?
model.exports = {
'parse': function(req, res) {
var week = [0,0,0,0,0,0,0];
for (var day = 0; day < 7; day++){
Elements.count({ date : {'>=' : start_date + day, '<' : end_date + day }}).exec(function countCB(error, count) {
week[day] = count;
});
};
res.view('static/emissions', { data : week });
};
};
答案 2 :(得分:0)
看看
<强> e.originalEvent 强>
_paste_plain_text : function (e) {
e.preventDefault();
var text = e.originalEvent.clipboardData.getData("text/plain");
document.execCommand("insertHTML", false, text);
}