JS Text Range Selector

- - posted in javascript

今天需要用到文字選取
情境是
當使用者需要更改檔案名稱時
直接將檔名反白選取
這樣也可以避免改到附檔名
如圖:
demo 程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

    /**
     * Text Range Selector
     *
     * @param   {Element}   element
     * @param   {Integer}   start
     * @param   {Integer}   end
     */
    function select (element, start, end) {
        element = element instanceof jQuery ? element.get(0) : element;
        end = end === -1 ? element.value.length : end;
        element.focus();
        try {
            if (element.createTextRange) {
                var range = element.createTextRange();

                if (win.navigator.userAgent.toLowerCase().indexOf("msie") >= 0) {
                    start = element.value.substr(0, start).replace(/\r/g, '').length;
                    end = element.value.substr(0, end).replace(/\r/g, '').length;
                }

                range.collapse(true);
                range.moveStart('character', start);
                range.moveEnd('character', end - start);

                range.select();
            } else if (element.setSelectionRange) {
                element.setSelectionRange(start, end);
            }
        } catch (e) {
        }
    }

Comments