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

来源:互联网 发布:淘宝兼职 刷单怎么 编辑:程序博客网 时间:2024/05/16 01:49

兼容: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 中,便可以解决这个问题。



0 0