Javascript 单击或按enter键触发主干事件
我是主干网新手,我正在寻找一种方法,当我按下回车键并单击时,我的按钮会被触发。当前Javascript 单击或按enter键触发主干事件,javascript,jquery,backbone.js,backbone-events,Javascript,Jquery,Backbone.js,Backbone Events,我是主干网新手,我正在寻找一种方法,当我按下回车键并单击时,我的按钮会被触发。当前showPrompt仅在单击时执行。什么是最干净、最干燥的方式让它在按Enter键时执行,最好只对该输入字段执行 (function () { var Friend = Backbone.Model.extend({ name: null }); var Friends = Backbone.Collection.extend({ initialize: function (mode
showPrompt
仅在单击时执行。什么是最干净、最干燥的方式让它在按Enter键时执行,最好只对该输入字段执行
(function () {
var Friend = Backbone.Model.extend({
name: null
});
var Friends = Backbone.Collection.extend({
initialize: function (models, options) {
this.bind("add", options.view.addFriendLi);
}
});
var AppView = Backbone.View.extend({
el: $("body"),
initialize: function() {
this.friends = new Friends(null, {view: this});
},
events: {
"click #add-friend": "showPrompt",
},
showPrompt: function () {
var friend_name = $("#friend-name").val()
var friend_model = new Friend({ name:friend_name });
this.friends.add( friend_model );
},
addFriendLi: function (model) {
$("#friends-list").append("<li>" + model.get('name') + "</li>");
}
});
var appView = new AppView;
}());
(函数(){
var Friend=Backbone.Model.extend({
名称:空
});
var Friends=Backbone.Collection.extend({
初始化:功能(模型、选项){
this.bind(“add”,options.view.addFriendLi);
}
});
var AppView=Backbone.View.extend({
el:$(“正文”),
初始化:函数(){
this.friends=新朋友(null,{view:this});
},
活动:{
“单击#添加好友”:“显示提示”,
},
showPrompt:函数(){
var friend_name=$(“#friend name”).val()
var friend\u model=新朋友({name:friend\u name});
this.friends.add(friends\u模型);
},
addFriendLi:功能(模型){
$(“#好友列表”).append(“”+model.get('name')+“ ”);
}
});
var-appView=新的appView;
}());
另外,在哪里可以阅读更多关于这种事件绑定的信息?主干事件在定义方式上是否与JS或jQuery事件不同?您可以在
AppView
中向事件添加一个以上的事件
events: {
"click #add-friend": "showPrompt",
"keyup #input-field-id" : "keyPressEventHandler"
}
keyPressEventHandler : function(event){
if(event.keyCode == 13){
this.$("#add-friend").click();
}
}
其中,#输入字段id
是要添加事件的字段
然后在AppView
中添加eventHandler
events: {
"click #add-friend": "showPrompt",
"keyup #input-field-id" : "keyPressEventHandler"
}
keyPressEventHandler : function(event){
if(event.keyCode == 13){
this.$("#add-friend").click();
}
}
注意:这段代码没有经过测试,但您可以这样做
看看如何理解Backbone
在视图中处理事件
假设您正在使用jQuery
进行DOM操作
,您可以创建自己的“微型”插件,在输入中触发Enter事件。将其放入plugins.js或任何安装脚本文件中:
events: {
"click #add-friend": "showPrompt",
"keyup #input-field-id" : "keyPressEventHandler"
}
keyPressEventHandler : function(event){
if(event.keyCode == 13){
this.$("#add-friend").click();
}
}
$('input').keyup(function(e){
if(e.keyCode == 13){
$(this).trigger('enter');
}
});
现在您已经创建了这个“输入”插件,您可以通过以下方式收听输入事件:
events: {
"click #add-friend": "showPrompt",
"enter #friend-name": "showPrompt"
}
所以我需要有两个不同的函数?按Event处理程序并显示提示。。嗯,我想这没关系,虽然看起来不是很枯燥,但你可以考虑在keyup
上再次调用showPrompt
,检查keyCode
。而不是在上触发单击事件,只需调用this.showPrompt()
就足够了。@Timofey这种方法面临什么问题?它根本没有触发我的事件,我花了一些时间试图让它工作。我一定错过了什么,我可以很快回去再试一次,如果您想让它在任何元素上工作(不仅仅是输入),您可以对jQuery代码段执行如下操作:$(document).keyup(函数(e){if(e.keyCode==13){$(':focus').trigger('enter');});