How do I shift the visible text in a narrow input element to see the cursor at the end?

后端 未结 2 821
被撕碎了的回忆
被撕碎了的回忆 2020-12-11 09:40

The problem I am having is that given an input element with a maxlength that is much wider than the element\'s width (as set in its style), and, given a value that is wider

2条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-11 10:06

    I doubt this is a great cross-browser solution, however it does seem to be a work around in Firefox. I originally tried it by simulating the right arrow-key press, but didn't have any luck.

    function setCursor(id)
    {
        var elem = document.getElementById(id);
    
        elem.focus();
        elem.setSelectionRange(elem.value.length, elem.value.length);
    
        // Trigger a "space" keypress.
        var evt = document.createEvent("KeyboardEvent");
        evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0, 32);
        elem.dispatchEvent(evt);
    
        // Trigger a "backspace" keypress.
        evt = document.createEvent("KeyboardEvent");
        evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0);
        elem.dispatchEvent(evt);
    }
    

    More info on initKeyEvent here.

提交回复
热议问题