用Javascript制作一个可自动填写的文本框(一)
2010-09-14 13:32:21 来源:WEB开发网在粗体代码中,我们从一个text range对象(由文本框对象创建的文本范围对象TextRange)开始,TextRange设置了文本选择范围的起始和结束坐标,要调整这开始坐标我们用moveStart() 方法;这个方法给出了两个参数:参数一是移动间隔类型,代码中使用了”character”(字符)类型 ;参数二是移动多少个间隔,比如移动了5个间隔那么就由参数一”character”得知移动了5个字符, 如果参数一是”word”(词),那么就移动了5个词。(译者注:关于TextRange对象的方法详细说明详见MSDN)。moveEnd()有同样的参数,稍有不同的是其第二个参数必须是负数(译者注:在MSDN2001中查得这个参数可以是正数,可能原作者考虑到IE版本较低的问题),你可以想象为移动到被选择文本结束处,然后后退一个间隔,后退两个间隔…。为了获得moveEnd()的第二个参数,我们将赋给 iEnd文本框中文本长度的负值, 因此,如果iEnd 是8且文本框中有10个字符,第二个参数变为-2,选择范围会将结束点会后退2个字符。最终,我们调用select() 方法在文本框中加亮选择的范围。
为Mozilla浏览器完成上面这些事情居然更容易办到。
文本框对象有一个setSelectionRange() 方法,它有两个参数:选择的开始和结束位置,可以直接通过iStart 和 iEnd 设定:
function textboxSelect (oTextbox, iStart, iEnd) {
switch(arguments.length) {
case 1:
oTextbox.select();
break;
case 3:
if (isIE) {
var oRange = oTextbox.createTextRange();
oRange.moveStart("character", iStart);
oRange.moveEnd("character", -oTextbox.value.length + iEnd);
oRange.select();
} else if (isMoz) {
oTextbox.setSelectionRange(iStart, iEnd);
}
}
}
现在我们返回到上一个case语句处,即只赋给了两个参数(iEnd 未赋值)的case语句处。
实际上,与赋三个参数不同的是iEnd 必须等于在文本框中字符串的长度就可以了。像下面这样实现:
function textboxSelect (oTextbox, iStart, iEnd) {
switch(arguments.length) {
case 1:
oTextbox.select();
break;
case 2:
iEnd = oTextbox.value.length;
/* falls through 由case3继续处理*/
case 3:
if (isIE) {
var oRange = oTextbox.createTextRange();
oRange.moveStart("character", iStart);
oRange.moveEnd("character", -oTextbox.value.length + iEnd);
oRange.select();
} else if (isMoz){
oTextbox.setSelectionRange(iStart, iEnd);
}
}
}
在上面的case 2 中我们没有使用break 语句,只是在执行完case 2后的语句后再进入下一个case语句。
Tags:Javascript 制作 一个
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接