当我们在开发过程中,遇到要通过js给input框设置初始值时,在ios会出现,当input框通过点击触发聚焦的时候(input聚焦在ios中是无法通过js进行聚焦实现的),会发现光标还停留在设置内容之前,这是用户需要再次点击末尾处才能将光标置于内容的末尾,这样造成用户体验较差,为了解决这个问题,我们需要在input框第一次需要实现聚焦的时候,手动将光标置于内容的后面,实现如下:在service中实现如下方法
moveEnd: function(obj) { obj.focus(); var len = obj.value.length; if (document.selection) { var sel = obj.createTextRange(); sel.moveStart('character', len); sel.collapse(); sel.select(); } else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') { obj.selectionStart = obj.selectionEnd = len; } },
调用方式为 传入input的dom对象做为参数即可。
cService.moveEnd(document.getElementById('task-detail-comment-area'));
将输入框的id设置为
task-detail-comment-area这个接口,
同时,对于输入框文字靠右的情况下,手指点击输入框最末尾的时候,由于手指点击范围较大,经常无法定位到最后的位置,这是也可以通过这个方法去定位到最末尾。