版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处http://xinyistudio.vicp.net/和作者信息及本声明
(本文适合中高级读者)
译者序:
为了获取用户更多的信息,你不惜网站页面中产生了大量的文本框,选单,列表框,当用户看到如此繁多的需要输入或选择项,很有可能为此产生厌倦并最终离开你的网站。
采用Javascript对输入文本框更好的设计,能够尽可能的避免上述问题,希望本篇译文能够对你在web页面的开发设计当中有所帮助,译文翻译错误难免,望大家批评指正。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
今天人们最不愿意面对的就是填写大量的表单(form),特别是那些需要敲入字符的文本框(就是我们经常用的<input type=text> html标记, 以后为方便就称为文本框)。
微软在outlook中结合了可自动完成输入的文本框--文本框检查由用户输入的少量的字符,然后从给定的下拉列表中给出一个建议的词。同样的,当你开始在web地址栏中填入一个url地址,你的Web浏览器会给你推荐一个url的下拉列表单。
在这篇教程中用了一点点Javascript的控制,我们将创建具有与IE(版本5.5或更高)
和Mozilla(版本1.0或更高)浏览器相类似行为的输入文本框。
Ø 简单的浏览器检测
-----------
首先,我们需要做一个浏览器的检测,下面是一些简单的代码(这个过程可以用你自已写的代码替代它)
var isOpera = navigator.userAgent.indexOf(“Opera”) > -1;
var isIE = navigator.userAgent.indexOf(“MSIE”) > 1 && !isOpera;
var isMoz = navigator.userAgent.indexOf(“Mozilla/5.”) == 0 && !isOpera;
这代码很明显不是非常完善,但它看来对于我们要达到的目的已足矣。让我们开始这个项目吧。
Ø 选择文本框
---------――
在这过程的第一步是创建一个方法,这个方法可以在一个文本框中选择确定的文本数。我将
调用这个方法 textboxSelect() , 它有三个参数,第一个参数是让这个方法作用于的对象:oTextbox;第二个参数是非必选项,它指示了选择的起始位置(如果这个参数被忽略,那么全部的文本都被选择);第三个参数,同样是非必选项,指示了选择的结束位置。如果提供了第二个参数,但第三个参数未提供,在文本框中被选的文本将从起始位置到结束位置。
我们写一个非常容易理解的格式:如果仅有一个参数提供,那么我们就使用文本框的原型方法select() 在这个文本框中以选择所有的文本:
function textboxSelect(oTextbox, iStart, iEnd) {
switch(arguments.length) {
case 1:
oTextbox.select();
break;
...
}
}
在这里我们使用了switch语句测试有多少个参数输入。如果仅有一个,即只有oTextbox被
输入。下一步, 我们跳到有三个参数都被选择的case语句的开始处(iStart和iEnd都被选择)。
这里,我们需要用一个浏览器检测一下这个方法所做的一切,对于IE浏览器,我们将使用一个文本范围对象。
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) {
...
}
}
}
在粗体代码中,我们从一个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语句。
(一) (二)(三)
分享到:
相关推荐
jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画制作和Ajax交互。在"文本框邮箱自动完成"的场景中,jQuery可以监听文本框的输入事件,当用户输入字符时,触发一个函数来查找匹配的邮箱地址。 ...
13.31 用JavaScript制作的特色时钟 13.32 自定义的日历 13.33 生日提醒器 13.34 时间的倒影 13.35 使用正则表达式验证日期 13.36 全面的日期选择功能 13.37 全球的时间查看表 13.38 无刷新定时取数据 13.39 取当月的...
标题“用Excel自动填充网页表单”简明扼要地概括了本文的主要内容:如何利用Microsoft Excel中的编程技术来实现自动填写网页上的表单。 #### 描述解析: 描述部分提供了更具体的信息:“代码实现用Excel表格中数据...
13.31 用JavaScript制作的特色时钟 13.32 自定义的日历 13.33 生日提醒器 13.34 时间的倒影 13.35 使用正则表达式验证日期 13.36 全面的日期选择功能 13.37 全球的时间查看表 13.38 无刷新定时取数据 13.39 取当月的...
标题中提到的“js实现点击文本框显示日期选择器特效代码分享”,表明本文要探讨的是使用JavaScript语言开发一个点击文本框后能够弹出日期选择器的Web特效。这种特效在网页中较为常见,特别是在需要用户选择日期的...
2. 注册成功后,打开工程项目,直接将 OCX 控件拖入控件资源框中即可使用,为控件添加变量后,在工程文件中回=会自动添加几个文件,如图成功后就可调用控件的接口了。 四、JS 调用 OCX 控件方法 JS 调用 OCX 控件...
自动化测试是一种使用软件工具执行预定义的测试案例来自动验证产品的行为,以确保软件应用程序按预期运行的过程。这种方法有助于提高测试效率、减少人为错误并缩短发布周期。 **二、自动化测试在Web开发中的应用** ...
在这个HTML日记本中,可能会使用`<form>`标签来创建输入表单,让用户填写日记内容,同时可能用到`<input>`标签来设定文本框、日期选择器等输入控件。 CSS(层叠样式表)则负责网页的布局和视觉样式。通过选择器如...
EXT是一个强大的JavaScript库,主要用于构建富客户端应用。它提供了一系列组件化的UI元素,包括我们这里提到的FORM,用于用户输入和数据交互。EXT form是EXT框架中的一个关键部分,允许开发者创建复杂的表单结构,...
总结来说,这个HTML5手机版问卷模板利用了HTML5的新特性,如语义化标签、响应式设计、本地存储和强大的JavaScript API,提供了一个轻量级、可定制的移动端问卷解决方案。开发者可以根据自己的需求对模板进行扩展和...
- **学习资源**: 对于初学者来说,这样的项目是一个非常好的学习资源,不仅涵盖了HTML5、CSS3、JavaScript的基础知识,还展示了实际开发过程中的各种技巧和注意事项。 - **实践经验**: 通过参与这样的项目实践,...
总的来说,"dede服饰自适应表单系统"是一个功能强大的工具,它集成了前端开发的三大核心技术:HTML、CSS和JavaScript,旨在为服装行业提供高效、灵活且易用的数据管理解决方案。无论是在后台管理端还是用户端,都...
通过上述知识点的解析,我们可以看到“Form-PDF-Builder”不仅是一个工具,而且代表了一种使用JavaScript驱动的动态PDF生成技术,它在数据驱动的文档生成领域具有广泛的应用价值。对于IT专业人士来说,了解并掌握...
- **离线填报样例**:展示了一个典型的离线填报报表,其中包含了多个数据字段和审核审批功能,支持用户自行增加和删除行。 #### 结语 Style Report报表软件以其敏捷、灵活和强大的特性,成为了企业级报表和数据...
这个插件接受一个可选的选项对象,包含最小高度`minHeight`和最大高度`maxHeight`。在`each`循环中,插件会遍历选择到的所有文本框元素,并对它们应用自增长功能。 关键部分在于`keyup`事件处理函数,它会在用户...
- 使用VS.NET开发一个名为“幸运52”的游戏应用。 - 设计简洁直观的用户界面,包括主菜单、按钮和导航键等。 - 实现核心的游戏逻辑,包括商品估价、反馈提示等功能。 - 优化界面布局以适应不同尺寸的屏幕。 - ...
1. **表单模板设计**:使用Adobe LiveCycle Designer等工具设计表单模板,这一步骤非常重要,因为它直接影响到最终用户的使用体验。 2. **数据绑定**:通过定义数据源(如SAP字段)与表单控件之间的绑定关系,实现...
- **作用**:使用 `noscript` 标签隐藏一个 iframe 来阻止用户保存整个网页。 - **应用场景**:适用于版权保护较为严格的网站,阻止用户保存网页内容。 #### 十、查看网页源代码 - **代码实现**: ```html 查看...