文本框脚本

在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. 使用xhprof对php7程序进行性能分析

    Xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile. 对于还在使用php5的 ...

  2. c#devexpress 窗体控件dock的重要

    在设计c# devexpress winform 窗体时, 要建立起dock意识, dock就是子窗体如何靠在父窗体上, 有fill 全覆盖, buttom 底部,top 上部... 如下图 pane ...

  3. 8.Redis内存分配

    8.Redis内存分配8.1 内存消耗8.1.1 内存使用统计8.1.2 内存消耗划分8.1.3 子进程内存消耗8.2 内存管理8.2.1 设置内存上限8.2.2 动态调整内存上限8.2.3 内存回收 ...

  4. Mysql运行状态查询命令及调优详解

    (转载自点击打开链接) MySQL运行状态及调优(一) 一.查看MySQL运行情况SHOW STATUS; 二.查看INNODB数据库引擎运行状态SHOW ENGINE INNODB STATUS; ...

  5. zookeeper测试代码

    package com.sjt.test; import java.util.List; import java.util.concurrent.CountDownLatch; import org. ...

  6. 原来这就是 UI 设计师的门槛

    本文主要分享 UI 设计师入行的一些个人经验指南,希望可以带给新入行业的设计师一点帮助! 写在前面 随着互联网的不断发展,特别是移动互联网的不断成熟,视觉设计师也进行了迭代与细分.衍生出的 UI 设计 ...

  7. Python unittest使用小结

    unittest是Python自带的单元测试框架,其中最核心的四个概念是:test case, test suite, test runner, test fixture. 流程:TestLoader ...

  8. Vue在一个函数中调用另外一个函数

    如:在vue的methods中一个函数调用另外一个函数 this.$options.methods.函数名字(); (这样的话要注意,this的指向已经指向了这个实例而不是指向全局,所以可能会报错说b ...

  9. python基础入门之对文件的操作

    **python**文件的操作1.打开文件 打开文件:open(file,mode='r') file:操作文件的路径加文件名 #绝对路径:从根目录开始的 #相对路径:从某个路径开始 mode:操作文 ...

  10. linux五种I/O模型

    1.基本概念 1.1同步和异步 同步和异步关注的是消息通信机制 1.1.1同步 所谓同步,就是在发出一个调用时,在没有得到结果之前,调用就不返回,一直在等,但是一旦调用返回,就能得到返回值. 1.1. ...