我一直在使用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' 它不会被触发。

我还发现了其他几个帖子,例如: 单击事件不会在下划线模板中触发

这表明它与 underscore.js 模板过程有关,但没有什么是非常清楚的。

我想我可以在 touchstart 上创建一个计时器函数来模拟这个,但它有点神秘,所以我想知道到底发生了什么。

谢谢。

有帮助吗?

解决方案 2

事实证明是 iScroll 导致了这个问题。

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

具体来说。我刚刚注释掉了 e.preventDefault(); 这真是一种享受!

其他提示

尝试这个:

this.$(':input').bind(...)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top