文本框脚本

在HTML中文本框有两种实现方式:

  1. <input>
  2. <textarea>

这两种实现方式虽然在多数情况下表现一致,但是两者之间仍存在许多重要区别

对于<input>来说,如果需要展现一个文本框则需要将 type 特性设置为“text”

通过设置其 size 特性可以指定文本框中能够显示的最大字符数

通过 value 特性则可以设置文本框的初始值

通过设置 maxlength 特性可以设置文本框接收的最大字符数

<input type="text" size="25" maxlength="50" value="initial value">

如上方代码所示,创建了一个能显示25个字符,最多接收50个字符,初始值为 initial value 的文本框

相对于<input>,<textarea>元素则会呈现一个多行文本框,要指定文本框的大小则通过两个特性来进行限制

  • cols:文本框的字符列数
  • rows:文本框的字符行数

而初始值的设值则需要将内容放在两个标签之间

如:

<textarea>initial value</textarea>

无论这两种展现方法在表现形式上存在多大的区别,他们都会将用户输入的值保存在 value 特性中

但是需要注意的是:最好不要使用DOM方法来获取或者修改值(即通过setAttribute()等方法来修改特性的值),因为对 value 特性的修改不一定会展示在DOM中

选择文本

上述两种文本框都支持 select() 方法,这个方法用于选择文本框中的文本

在主流浏览器中,对文本框调用 select() 方法时会将焦点设置为文本框

该方法不接受参数,可以在任何时候被调用

调用时会选中文本框中的所有文本

通常来说这种方法用于让文本框获得焦点时自动选中所有文本

代码如下:

var textarea = document.getElementsByTagName('textarea')[0];

textarea.onfocus = function(){
this.select();
}

这种做法可以提供较好的用户体验

select事件

与select方法对应的事件是 select 事件

在选择了文本框中的文本时就会触发该事件

不过在不同的浏览器中该事件的触发机制有所不同

一部分浏览器要在用户选择了文本,且释放鼠标后才会触发

剩余的部分(以IE8以下的低版本IE为主)只要选择了文本就会触发

取得文本

虽然通过 select 事件我们可以知道用户选择了文本

但是无法获取用户选择的文本内容,所以HTML5对此进行了拓展

对文本框添加了如下属性:

  • selectionStart:选中文本开头的偏移量(从0开始)
  • selectionEnd:选中文本末尾的偏移量

通过这两个属性我们就可以获取用户选中的文本

textarea.addEventLinstener("select",function(event){
return this.value.substring(this.selectionStart,this.selectionEnd);
},false)

选择部分文本

HTML5也为选择文本框中的部分文本提供了解决方案

即 setSelectionRage()方法

该方法接收两个参数:第一个字符串的偏移量,最后一个字符的偏移量,类似于上面的 selectionStart 和 selectionEnd

但是对于低版本的IE要实现上述功能则需要使用范围

所以该方法的跨浏览器实现如下:

function selectText(textbox,startIndex,stopIndex){
if(textbox.selectionRange){
textbox.selectionRange(startIndex,stopIndex);
}else if(textbox.createTextRange){
var range = textbox.createRange();
range.collapse(true);
range.moveStart("character",startIndex);
range.moveEnd("character",stopIndex-startIndex);
range.select();
} textbox.focus();
}

Javascript高级编程学习笔记(76)—— 表单(4)选择文本的更多相关文章

  1. 《JavaScript高级程序设计》笔记:表单脚本(十四)

    表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在JS中,表单对应的是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而 ...

  2. Javascript高级编程学习笔记(83)—— 富文本选区(3)

    富文本选区 在富文本编辑器中使用 iframe 的 getSelection() 方法可以获取选中的文本 该方法是 window 对象和 document 对象的属性,调用后会返回一个当前选选择文本的 ...

  3. Javascript高级编程学习笔记(75)—— 表单(3)表单字段

    表单字段 表单作为web应用中不可或缺的一部分,当然也是可以使用原生的 DOM 元素来访问的 除了标准的访问方式之外,每个表单都拥有一个 elements 属性,该属性保存着该表单所有 表单元素 的集 ...

  4. Javascript高级编程学习笔记(80)—— 表单(8)表单序列化

    表单序列化 随着 Ajax 的出现,表单序列化成为一种常见需求 以将表单信息序列化为查询字符串为例 我们可以利用表单的 type 属性,以及 name 和 value 实现对表单的序列化 序列化应满足 ...

  5. Javascript高级编程学习笔记(78)—— 表单(6)HTML约束验证API

    自动切换焦点 使用JS可以极大地提升表单的易用性 其中最常用的一种就是当用户填写完当前字段后焦点自动切换到下一个字段 以下方的HTML代码为例: <input type="text&q ...

  6. Javascript高级编程学习笔记(77)—— 表单(5)过滤输入

    在日常实践中,我们常常会需要用户按照某种规则输入数据 但是文本框在默认情况下缺少验证数据的手段,因此需要使用JS来完成此类过滤输入的操作 通过事件和DOM的结合手段就能够将普通的文本框转换为功能型控件 ...

  7. Javascript高级编程学习笔记(74)—— 表单(2)表单提交及重置

    表单提交 表单的很大一部分作用就是帮助用户完成和服务器的交互 所以表单提交是表单中比较重要的部分 虽然现如今的大部分应用场景都使用 AJAX 的异步请求来代替表单,但是仍有部分操作需要使用表单来完成, ...

  8. Javascript高级编程学习笔记(73)—— 表单(1)表单基础

    表单 JS最初的一个用途就是帮助服务器分担处理表单的责任 时至今日,虽然web应用以及JS都有了长足的发展,但是表单依然是现在web应用中比较重要的部分. 因为默认的表单控件很丑,所以有时候我们会使用 ...

  9. Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件

    键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...

  10. Javascript高级编程学习笔记(58)—— 事件(2)事件处理程序

    事件处理程序 事件处理程序即响应某个事件的函数 事件处理程序以 “on” 开头 如“onclick”,“onload” HTML事件处理程序 某个元素支持的每种事件都可以使用一个与响应的事件处理程序同 ...

随机推荐

  1. python 微信轰炸

    from __future__ import unicode_literals import requests import itchat import time def get_news(): ur ...

  2. python数据库进阶

    第1节 MySQL基础 一,说明 1,认识MySQL与创建用户 MySQL是最流行的关系型数据库管理系统之一,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据管理系统 ...

  3. select2插件用法

    1.修改默认查询方法,使其可以根据value查询 this.element.select2({ allowClear: true, matcher: function (term, text, ele ...

  4. JavaSE编程题

    Test1–取出一个字符串中字母出现的次数.如:字符串:”abcdekka27qoq”,输出格式为:a(2)b(1)k(2)… Test2–假如我们在开发一个系统时需要对员工进行建模,[员工]包含3个 ...

  5. 【转】Android总结篇系列:Activity启动模式(lauchMode)

    [转]Android总结篇系列:Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些 ...

  6. 上传本地文件到github

    第一步:创建新的仓库 勾选Initialize this repository with a README选项,自动创建REAMDE.md文件. 第二步: $ git config --global ...

  7. hive插入数据-单条

    写入数据到hive的hdfs文件中即可,hive创建表的时候用小写做表名,不然查不到 相关操作如下: 查看目录与表 hive> dfs -ls /user/hive/warehouse/ 准备h ...

  8. hw3

    1. 2.将MAXPRIMES的值设为4,t2会发生越界错误,t1不会. 3.令n = 1,此时不满足while语句的判断条件,不执行while循环. 4. 点覆盖:{1,2,3,4,5,6,7,5, ...

  9. 《Linux就该这么学》第十天课程

    使用RAID与LVM磁盘阵列技术 有RAID 0,RAID 1,,RAID 5,RAID 1 0等,下面列举RAID的各个概况 1. RAID 0 RAID 0技术把多块物理硬盘设备(至少两块)通过硬 ...

  10. Java实现AES加密,异常java.security.InvalidKeyException: Illegal key size 的解决

    Java实现AES加密,抛出异常如下:java.security.InvalidKeyException: Illegal key size 代码参考 http://my.oschina.net/Ja ...