文本框脚本

在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. 十、JAVA面试简答

    2.ASCII编码表的常识 3.&和&&,|和||的区别 下面我们就分成三组对问题进行分析:分别是&和&&,|和||及~和!. 1.&是按位与操 ...

  2. 找不到org.restlet.ext.jackson 解决办法

    检出 转成maven工程 ,不过最后发现有两个包maven没有找到: <dependency> <groupId>org.restlet.jse</groupId> ...

  3. springboot使用Redis,监听Redis键过期的事件设置与使用代码

    我使用的是Windows下的Redis服务,所以一下Redis设置都是在Windows平台进行. 1.修改Redis配置文件 1.1:Windows下的Redis存在两个配置文件 修改带有servic ...

  4. Vue中观察者模式的实现

    Vue中实现观察者模式的方法可以有三种: 1.v-on方法 exp: <div id='test'> <button v-on:event='functionName'>but ...

  5. Autel MaxiTPMS TS601 Wireless TPMS Sensor Reset Relearn Activate Programming Tool

    Why Choose Autel TPMS TS601? MaxiTPMS TS601 is a TPMS tool with highest performance in the world. It ...

  6. Java Swing实现展示数据,以及过滤排序

    public class RelationCostctrTable extends DefaultTableModel { public RelationCostctrTable(Vector< ...

  7. 转载 linux基本操作

    转载地址 https://segmentfault.com/a/1190000014840829 前言 只有光头才能变强 这个学期开了Linux的课程了,授课的老师也是比较负责任的一位.总的来说也算是 ...

  8. oracle中的日期函数的使用

    TO_DATE格式(以时间:2007-11-02   13:45:25为例) Year:               yy two digits 两位年                显示值:07   ...

  9. mongodb内嵌文档的javaapi,增删改查

    数据结构: {"_id" : "000000001",  //Mongodb默认主键 "UID" : "000000001&quo ...

  10. Eclipse导入的User Libarary

    在使用eclipse导入外部jar包时,经常使用Add User Libarary的方式,采用这种方式,外部的jar包没有直接添加到WEB-INF/libs下,那这些jar是在哪里引入的呢? 使用外部 ...