在Javascript / YUI中选择文本输入框的特定子部分

时间:2011-03-31 14:42:01

标签: javascript yui

我正在尝试以编程方式在输入文本框中选择文本的子字符串。我找到了一个例子here,但只有一个问题。它不起作用!我在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 个答案:

答案 0 :(得分:1)

setSelectionRange()适用于除IE&lt; = 8以外的所有主流浏览器。由于get()set()不是DOM元素的标准方法,我很确定inputNode不是对实际<input>元素的引用。我想它是<input>元素周围的YUI包装器对象。您需要在输入本身而不是YUI包装器对象上调用setSelectionRange()

答案 1 :(得分:0)

您还可以使用Y.Node.getDOMNode&amp;获取对原始DOM节点的引用。然后在上面调用.setSelectionRange。