我一直在使用backbone.js创建一个Phonegap / Cordova 2.0应用程序,直到我尝试构建一个表单时,一切都很好。将显示该表单,但单击事件不会触发键盘。
我玩过不同的事件,发现添加ontouchstart="this.focus()"
会让键盘变好。我在view函数中添加了一个catchall来引起焦点:
window.PageView = Backbone.View.extend({
initialize: function() {
this.template = _.template(tpl.get('page'));
},
render: function(eventName) {
$(this.el).html(this.template(this.model.toJSON()));
$('input', $(this.el)).bind('touchstart',function(event) {
$(this).focus();
});
return this;
}
});
但即使这样,如果我将bind('touchstart'...
更改为'click'
,也不会触发。
我找到了其他一些帖子,例如:click event doesn't fire in an underscore template
这表明它与underscore.js模板化过程有关,但没有什么是非常明确的。
我想我可以在touchstart上制作一个计时器功能来模拟这个,但它有点神秘,所以我想知道发生了什么。
感谢。
答案 0 :(得分:0)
试试这个:
this.$(':input').bind(...)
答案 1 :(得分:0)
事实证明,导致问题的是iScroll。
onBeforeScrollStart: function (e) { e.preventDefault(); },
具体而言。我刚刚评论了e.preventDefault();
并且它很有效!