For text <input>
elements, the following will do the job. The example selects just the word "two" in the input:
function setInputSelection(input, startPos, endPos) {
input.focus();
if (typeof input.selectionStart != "undefined") {
input.selectionStart = startPos;
input.selectionEnd = endPos;
} else if (document.selection && document.selection.createRange) {
// IE branch
input.select();
var range = document.selection.createRange();
range.collapse(true);
range.moveEnd("character", endPos);
range.moveStart("character", startPos);
range.select();
}
}
document.getElementById("setSelection").onmousedown = function() {
var input = document.getElementById("i");
setInputSelection(input, 4, 7);
return false;
};
<input id="i" type="text" value="One two three">
<input type="button" value="Set selection" id="setSelection">
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…