将选择移动到变窄元素的末尾

时间:2013-08-01 13:15:42

标签: javascript backbone.js cordova mobile-safari ios6.1

我在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使输入变小。

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

有没有办法将光标移动到可以在Safari Mobile 6(iOS 6+)上运行的末端,而不会出现难看的延迟?

1 个答案:

答案 0 :(得分:0)

我最终将活动从focus更改为click并使用上面提到的类似代码,以便它可以正常运行。看起来像是从点击中选择的,在focus处理程序之后和click处理程序之前应用了文本编辑。