0

我一直在用backbone.js制作一个Phonegap / Cordova 2.0应用程序,在我尝试构建一个表单之前一切都很好。显示表单,但单击事件不会触发键盘。

我玩了不同的事件,发现添加ontouchstart="this.focus()"键盘很好。我在视图函数中添加了一个包罗万象以带来焦点:

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 上创建一个计时器功能来模拟这一点,但这有点神秘,所以我想知道到底发生了什么。

谢谢。

4

2 回答 2

0

尝试这个:

this.$(':input').bind(...)
于 2012-09-29T14:34:39.510 回答
0

原来是 iScroll 导致了这个问题。

            onBeforeScrollStart: function (e) { e.preventDefault(); },

具体来说。我刚刚评论了e.preventDefault();它,它很管用!

于 2012-10-01T12:06:54.617 回答