文本框脚本

在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 字典 拼接SQL语句

    def gen_sql(table_name, data):  """ :param table_name: 表名称 :param data: 字典对象 key为字段(要 ...

  2. jqgrid content-type datatype

    jQuery('#jq2').jqGrid( { url: 'http://localhost:8080/api/RskPriceFactorTest/senario/0/detail', editu ...

  3. identityserver4 代码系列

    链接:https://pan.baidu.com/s/1ePLwUxGpIPObwA8nnfDT9w 提取码:gr0x

  4. python3 利用pip命令安装包和模块

    本文介绍如何利用pip命令安装Python相关的包和模块.在Python中有些方法或者模块是自带的功能,也叫(build-in),内构函数,实际使用,可能内构函数或者模块不能完成我们的任务,我们就需要 ...

  5. linux sort排序命令的高级用法(按多个列值进行排列)

    http://www.jquerycn.cn/a_9076 在linux中,使用sort按行进行排序是很简单的.不过有时,生活总是爱抛给你一个一个的问题.如果使用sort按多个列值排列,同时使用tab ...

  6. nginx上传文件时 nginx 413 Request Entity Too Large 错误

    产生原因: 上传文件的大小超出了 Nginx 允许的最大值,默认是1M: 解决方法: 修改Nginx的配置文件(一般是:nginx/nginx.conf),在 http{} 段中增大nginx上传文件 ...

  7. Python基础环境搭建

    一.编程语言 1.解释型语言:每执行一次程序就要将代码翻译一次,如Java.JavaScript.VBScript.Perl.Python.Ruby.MATLAB 等都是解释型语言 2.编译型语言:程 ...

  8. bgfx入门练习3——编译自定义Shader

    马个鸡,总算编译过了自定义Shader,在此感谢自己,感谢自己,以及感谢自己.没有自己的努力,我是不可能解决这个问题的,自己真是太叼了.妈的智障!!! 管方那屎一样的make工具根本没用,反正我是折腾 ...

  9. linux nfs远程挂载和卸载

    一.nfs远程挂载 1.首先确定服务端(实体挂载节点)的IP 2.通过cat  /etc/hosts 查看服务端的server name 3.mount -t nfs servername:/挂载文件 ...

  10. HDU 6397 Character Encoding (组合数学 + 容斥)

    题意: 析:首先很容易可以看出来使用FFT是能够做的,但是时间上一定会TLE的,可以使用公式化简,最后能够化简到最简单的模式. 其实考虑使用组合数学,如果这个 xi 没有限制,那么就是求 x1 + x ...