我在 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
in是必需的_moveCursorToEnd
,因为否则效果不起作用。问题是,尽管setTimeout
有 1 毫秒,但它看起来像是第二个导致光标移动不方便的原因。
有什么方法可以将光标移动到在 Safari Mobile 6 (iOS 6+) 上运行的末尾,而不会出现丑陋的延迟?