Выбор конкретного подраздела поля ввода текста в Javascript / YUI - PullRequest
0 голосов
/ 31 марта 2011

Я пытаюсь программно выбрать подстроку текста внутри текстового поля ввода.Я нашел пример здесь , но есть только одна проблема.Это не работает!Я попробовал это на FF4, последней сборке Chrome и IE.Я не пробовал Opera, но если она не работает с этими 3, это не достаточно хорошее решение.

Я также искал на setSelectionRange, чтобы посмотреть, устарел ли он, но я не смог найти ничего, что могло бы заставить меня поверитьэто было.

Вот мой код, в котором я пытаюсь реализовать это:

_defShowTimeUnitFn: function(e) {
    if(!this.isValidInput()) {
        var inputNode = this._inputNode,
            input     = inputNode.get(VALUE),
            newText;


        newText = Y.Lang.trim(input) + ' ' + SHOW_TIMEUNIT_DEFAULT;
        inputNode.set(VALUE, newText);

        if (inputNode.setSelectionRange) {
            // Mozilla
            inputNode.setSelectionRange(0, 1);
        } else if (inputNode.createTextRange) {
            // IE
            var range = inputNode.createTextRange();
            range.collapse(true);
            range.moveEnd('character', 1);
            range.moveStart('character', 1);
            range.select();
        } else if (inputNode.selectionStart) {
            inputNode.selectionStart = 0;
            inputNode.selectionEnd = 1;
        }

        inputNode.focus();
    }
},

Кто-нибудь знает команды для выполнения

textbox.setSelectionRange(start,end);

в современномбраузер

Ответы [ 2 ]

1 голос
/ 31 марта 2011

setSelectionRange() работает во всех основных браузерах, кроме IE <= 8. Поскольку <code>get() и set() не являются стандартными методами элементов DOM, я уверен, что inputNode не является ссылкой на фактический <input> элемент. Я представляю, что это объект-оболочка YUI вокруг элемента <input>. Вам нужно вызывать setSelectionRange() для самого ввода, а не для объекта-оболочки YUI.

0 голосов
/ 01 апреля 2011

Вы также можете получить ссылку на необработанный DOM-узел, используя Y.Node.getDOMNode и затем вызвать .setSelectionRange для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...