Позиция курсора клавиатуры набора в текстовом поле HTML

Вы можете заключить скобки в текстовые теги

<text>(</text>
161
задан Community 23 May 2017 в 12:10
поделиться

1 ответ

Извлеченный от Josh Stodola позиция курсора клавиатуры Установки в Текстовом поле или TextArea с Javascript

родовая функция А, которая позволит Вам вставлять каре в любом положении текстового поля или текстовой области, которой Вы желаете:

function setCaretPosition(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

первый ожидаемый параметр является идентификатором элемента, на котором Вы хотите вставить каре клавиатуры. Если элемент будет не мочь быть найденным, то ничего не произойдет (очевидно). Второй параметр является индексом положения каре. Zero поместит каре клавиатуры вначале. При передаче числа, больше, чем количество символов в значении элементов оно поместит каре клавиатуры в конец.

Протестированный на IE6 и, Firefox 2, Opera 8, Netscape 9, SeaMonkey и Safari. К сожалению, на Safari это не работает в сочетании с onfocus событием).

пример использования вышеупомянутой функции, чтобы вынудить каре клавиатуры перейти в конец всех текстовых областей на странице, когда они получают фокус:

function addLoadEvent(func) {
    if(typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        if(func) {
            var oldLoad = window.onload;

            window.onload = function() {
                if(oldLoad)
                        oldLoad();

                func();
            }
        }
    }
}

// The setCaretPosition function belongs right here!

function setTextAreasOnFocus() {
/***
 * This function will force the keyboard caret to be positioned
 * at the end of all textareas when they receive focus.
 */
    var textAreas = document.getElementsByTagName('textarea');

    for(var i = 0; i < textAreas.length; i++) {
        textAreas[i].onfocus = function() {
            setCaretPosition(this.id, this.value.length);
        }
    }

    textAreas = null;
}

addLoadEvent(setTextAreasOnFocus);
186
ответ дан VH-NZZ 23 November 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: