IE8 及更早版本支持通过范围部分选中文本。这也就是说,要选择文本框中的部分文本,必须先使用 IE 在文本框上提供的 createTextRange() 方法创建一个范围,并使用 moveStart() 和 moveEnd() 范围方法把这个范围放到正确的位置上。不过,在调用这两个方法前需要先调用 collapse() 方法把范围折叠到文本框的开始。接着,moveStart() 可以把范围的起点和终点都移动到相同的位置,再给 moveEnd() 传入要选择的字符总数作为参数。最后一步是使用范围的 select() 方法选中文本,如下面的例子所示:
textbox.value = "Hello world!";
var range = textbox.createTextRange(); // 选择所有文本
range.collapse(true);
range.moveStart("character", 0);
range.moveEnd("character", textbox.value.length);
range.select(); // 选择前 3 个字符
range.collapse(true);
range.moveStart("character", 0);
range.moveEnd("character", 3);
range.select(); // "Hel"
// 选择第 4~6 个字符
range.collapse(true);
range.moveStart("character", 4);
range.moveEnd("character", 6);
range.select(); // "o w"
// "Hello world!"
与其他浏览器一样,如果想要看到选中的效果,则必须让文本框获得焦点。 部分选中文本对自动完成建议项等高级文本输入框是很有用的。
1. 屏蔽字符
有些输入框需要出现或不出现特定字符。例如,让用户输入手机号的文本框就不应该出现非数字字符。我们知道 keypress 事件负责向文本框插入字符,因此可以通过阻止这个事件的默认行为来屏蔽非数字字符。比如,下面的代码会屏蔽所有按键的输入:
textbox.addEventListener(, {
event.();
});

