0

我在 phonegap 中编写了一个应用程序,在单击输入元素时具有特定的“放大”效果(除了显示输入隐藏和自定义预输入建议之外的所有内容)。该视图是使用backbone.js 编写的,我正在进入焦点上的“放大”模式:

events: {
            'focus .search': 'startSearch',
}

在我的startSearch方法中,我正在做所有的逻辑来模仿zoom-in效果。

    _moveCursorToEnd: function(element) {
        var val_len = element.value.length;
        element.scrollLeft = val_len * 9;
        setTimeout(function() {
            element.selectionStart = val_len;
        }, 1);
    },

    startSearch: function() {
        window.navbar.hide();
        this.$input.addClass('search-input-small');
        this.$cancel.show();

        var el = this.$input[0];
        this._moveCursorToEnd(el);

    },

使search-input-small输入更小。

setTimeoutin是必需的_moveCursorToEnd,因为否则效果不起作用。问题是,尽管setTimeout有 1 毫秒,但它看起来像是第二个导致光标移动不方便的原因。

有什么方法可以将光标移动到在 Safari Mobile 6 (iOS 6+) 上运行的末尾,而不会出现丑陋的延迟?

4

1 回答 1

0

我最终将事件从 更改focusclick并使用了上面提到的类似代码,以便它工作。似乎从单击集中文本编辑的选择在处理程序之后focus和处理程序之前应用click

于 2013-10-07T17:29:07.980 回答