我正在尝试以编程方式在输入文本框中选择文本的子字符串。我找到了一个例子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);
在现代浏览器中?
答案 0 :(得分:1)
setSelectionRange()
适用于除IE< = 8以外的所有主流浏览器。由于get()
和set()
不是DOM元素的标准方法,我很确定inputNode
不是对实际<input>
元素的引用。我想它是<input>
元素周围的YUI包装器对象。您需要在输入本身而不是YUI包装器对象上调用setSelectionRange()
。
答案 1 :(得分:0)
您还可以使用Y.Node.getDOMNode&amp;获取对原始DOM节点的引用。然后在上面调用.setSelectionRange。