我在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+)上运行的末端,而不会出现难看的延迟?
答案 0 :(得分:0)
我最终将活动从focus
更改为click
并使用上面提到的类似代码,以便它可以正常运行。看起来像是从点击中选择的,在focus
处理程序之后和click
处理程序之前应用了文本编辑。