您的位置:首页 > Web前端 > JavaScript

js实现 移动光标跟焦点事件

2017-01-06 18:33 393 查看
兼容:google+ie等现代住浏览器;

问题:将光标移动到文本框最后位置

解决:

function toEnd(id) {

var textbox = document.getElementById(id);

var count=textbox.value.length;

if (textbox.createTextRange) {

  

var r = textbox.createTextRange();

r.collapse(true);

r.moveStart('character',count);

r.select();

} else if (textbox.setSelectionRange) {

event.preventDefault();

textbox.focus();

textbox.setSelectionRange(count,count);

// setTimeout(function () {

// textbox.focus();

// textbox.setSelectionRange(count,count);

// }, 0);

}

}

其中,在ie浏览器中,一切都好说

if (textbox.createTextRange) {

  

var r = textbox.createTextRange();

r.collapse(true);

r.moveStart('character',count);

r.select();

}

直接就能移动到末尾;

对于google等浏览器,如果事件来自onclick事件,直接需要

textbox.focus();

textbox.setSelectionRange(count,count);

就能解决,如果来自其他事件,需要两种方法来解决:

第一种:阻止浏览器默认事件:

event.preventDefault();

textbox.focus();

textbox.setSelectionRange(count,count);

第二种:因为chrom浏览器存在了某些bug,所以导致使用textbox.setSelectionRange(count,count);会出现事件无效效果,

但是如果把它放在setTimeout 中,便可以解决这个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: