Javascript高级编程学习笔记(76)—— 表单(4)选择文本
文本框脚本
在HTML中文本框有两种实现方式:
- <input>
- <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)选择文本的更多相关文章
- 《JavaScript高级程序设计》笔记:表单脚本(十四)
表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在JS中,表单对应的是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而 ...
- Javascript高级编程学习笔记(83)—— 富文本选区(3)
富文本选区 在富文本编辑器中使用 iframe 的 getSelection() 方法可以获取选中的文本 该方法是 window 对象和 document 对象的属性,调用后会返回一个当前选选择文本的 ...
- Javascript高级编程学习笔记(75)—— 表单(3)表单字段
表单字段 表单作为web应用中不可或缺的一部分,当然也是可以使用原生的 DOM 元素来访问的 除了标准的访问方式之外,每个表单都拥有一个 elements 属性,该属性保存着该表单所有 表单元素 的集 ...
- Javascript高级编程学习笔记(80)—— 表单(8)表单序列化
表单序列化 随着 Ajax 的出现,表单序列化成为一种常见需求 以将表单信息序列化为查询字符串为例 我们可以利用表单的 type 属性,以及 name 和 value 实现对表单的序列化 序列化应满足 ...
- Javascript高级编程学习笔记(78)—— 表单(6)HTML约束验证API
自动切换焦点 使用JS可以极大地提升表单的易用性 其中最常用的一种就是当用户填写完当前字段后焦点自动切换到下一个字段 以下方的HTML代码为例: <input type="text&q ...
- Javascript高级编程学习笔记(77)—— 表单(5)过滤输入
在日常实践中,我们常常会需要用户按照某种规则输入数据 但是文本框在默认情况下缺少验证数据的手段,因此需要使用JS来完成此类过滤输入的操作 通过事件和DOM的结合手段就能够将普通的文本框转换为功能型控件 ...
- Javascript高级编程学习笔记(74)—— 表单(2)表单提交及重置
表单提交 表单的很大一部分作用就是帮助用户完成和服务器的交互 所以表单提交是表单中比较重要的部分 虽然现如今的大部分应用场景都使用 AJAX 的异步请求来代替表单,但是仍有部分操作需要使用表单来完成, ...
- Javascript高级编程学习笔记(73)—— 表单(1)表单基础
表单 JS最初的一个用途就是帮助服务器分担处理表单的责任 时至今日,虽然web应用以及JS都有了长足的发展,但是表单依然是现在web应用中比较重要的部分. 因为默认的表单控件很丑,所以有时候我们会使用 ...
- Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件
键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...
- Javascript高级编程学习笔记(58)—— 事件(2)事件处理程序
事件处理程序 事件处理程序即响应某个事件的函数 事件处理程序以 “on” 开头 如“onclick”,“onload” HTML事件处理程序 某个元素支持的每种事件都可以使用一个与响应的事件处理程序同 ...
随机推荐
- mongod.service: control process exited, code=exited status=1
Cent OS 7上需要把mongoDB添加到systemd,否则会出现上面的错误 将mongoDB添加到systemd # vim /usr/lib/systemd/system/mongod.se ...
- CentOS7下开放端口
memcached等服务启动后,外网默认是无法访问的,因为防火墙不允许,所以要开启防火墙,让其可以访问这些端口号. 方法一:使用firewall 1.运行命令:firewall-cmd --get-a ...
- Mapbox Studio Classic 闪退问题解决方案
之前安装过Mapbox Studio Classic 0.38,好久没有用了,今天用的时候发现不停的闪退,经过一番折腾,发现删除 %USERPROFILE%\.mapbox-studio 目录下所有文 ...
- Shell脚本- 单条命令循环执行重复工作
关于shell for循环具体详细说明可参考:http://wiki.jikexueyuan.com/project/linux-command/chap34.html example: 分别在com ...
- js简单的注册页面
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- python 15 常用模块三 re模块
一.正则模块 正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹 ...
- windbg排查大内存
现在都是用windbg preview,安装比较麻烦了,还要配置环境变量, 并且每次分析前要先执行 !analyze - v !eeheap -gc !DumpHeap -min 500 000002 ...
- OPENCV中特征提取和匹配的步骤
1.定义特征提取器和描述子提取器: cv::Ptr<cv::FeatureDetector> detector; cv::Ptr<cv::DescriptorExtractor> ...
- Game Theory
HDU 5795 || 3032 把x个石子的堆分成非空两(i, j)或三堆(i, j, k)的操作->(sg[i] ^ sg[j])或(sg[i] ^ sg[j] ^ sg[k])是x的后继 ...
- web安全系列2:http初探
web安全系列的第二篇 首先,我们先来理解两个名词C/S架构和B/S架构. 所谓C/S架构,就是客户机/服务器架构,而B/S架构就是浏览器/服务器架构.C/S是通常的桌面程序的架构方式,而B/S就是网 ...