realazy


focus 进 textarea 元素后光标位置的修复

问题

一个已经有内容的 textarea 元素,在执行该元素的 .focus() 方法后,不同的浏览器有不同表现。我们的预期是能够出现在内容后面,但只有 gecko 浏览器能做到。

修复

注意:这个函数不能直接运行,函数内的 isIE, isOpera 和 isWebkit 需要你的库提供或你编写,这并不难,对吧。

function fixTextareaFocusCursorPosition(elTextarea){
    if (isIE || isOpera){
        var rng = elTextarea.createTextRange();
        rng.text = elTextarea.value;
        rng.collapse(false);
    } else if (isWebkit) {
        elTextarea.select();
        window.getSelection().collapseToEnd();
    }
}

5 Responses to “focus 进 textarea 元素后光标位置的修复”

  1. 锐风 Says:

    沙发.
    米看懂意思.

  2. leeight的马甲 Says:

    Thanks

  3. 唯一 Says:

    看起来有点难度 迷糊

  4. mm Says:

    area.value=area.value+”";

  5. Hangring Says:


    rng.collapse(false);
    之间,需加上:
    rng.select();
    才有效果,ie6,7下

Leave a Reply


第三届 D2 前端技术论坛 (上海)

realazy (懒到死) is proudly powered by WordPress | Entries (RSS) and Comments (RSS)