JavaScript基础笔记(十)表单脚本

表单脚本

一、表单基础知识

JavaScript中表单对应的是HTMLFormElement类型,该类型继承自HTMLElement类型。

通过document.forms可以获得所有表单元素,通过数值索引和name特性可以获得其中特定的表单。

一)提交表单

单击提交按钮或者图像按钮就可以提交表单。

三种方式:

<!--通用提交按钮-->
<input type=‘submit‘ value=‘submit value‘>

<!--自定义提交按钮-->
<button type=‘submit‘>Submit value</button>

<!--图像按钮-->
<input type=‘image‘ src=‘gra.png‘>

只要表单中存在上述任何一种按钮,在按钮控件有焦点的情况下,按回车键即可提交表单。

以这种方式提交表单时,浏览器会将请求发送给服务器之前出发submit事件。

在JavaScript中,以编程方式调用submit()方法也可以提交表单。

var form = document.getElementById(‘myForm‘);
//提交表单
form.submit();

记住,以submit()方法提交表单不会触发submit事件。

避免重复提交表单方法:

1)第一次提交后禁用表单

2)利用onsubmit事件处理程序取消后续的表单提交操作。

三)重置表单

<!--通用重置按钮-->
<input type=‘reset‘ value=‘reset form‘>
<!--自定义重置按钮-->
<button type=‘reset‘>Reset Form</button>

用户单击重置按钮重置表单时会触发reset事件。

也可以通过JavaScript来重置表单:

form.reset();

与调用submit()方法不同,该方法会触发reset事件。

三)表单字段

var form = document.getElementById("form1");
//取得表单中的第一个字段
var field1 = form.elements[0];
//取得名为"textbox1"的字段
var field2 = form.elements["textbox1"];
//取得表单中包含的字段的数量
var fieldCount = form.elements.length;

1.共有的表单字段属性

? disabled:布尔值,表示当前字段是否被禁用。
? form:指向当前字段所属表单的指针;只读。
? name:当前字段的名称。
? readOnly:布尔值,表示当前字段是否只读。
? tabIndex:表示当前字段的切换(tab)序号。
? type:当前字段的类型,如"checkbox"、 "radio",等等。
? value:当前字段将被提交给服务器的值。对文件字段来说,这个属性是只读的,包含着文件
在计算机中的路径。

除了 form 属性之外,可以通过 JavaScript 动态修改其他任何属性 :

var form = document.getElementById("myForm");
var field = form.elements[0];
//修改 value 属性
field.value = "Another value";
//检查 form 属性的值
alert(field.form === form); //true
//把焦点设置到当前字段
field.focus();
//禁用当前字段
field.disabled = true;
//修改 type 属性(不推荐,但对<input>来说是可行的)
field.type = "checkbox";

注意,当在一个type=‘submit‘的按钮上设置click事件处理程序时,我们不能确定click事件和submit事件谁先会被触发。

2.共有的表单字段方法

1)focus()方法:用于将浏览器的焦点设置到表单字段

2)blur()方法,从元素中移走焦点。

3.共有的表单事件

所有表单字段都支持:

1)blur:当表单失去焦点时触发

2)change:对于<input> 和<textarea>元素,当它们失去焦点且value值发生改变时触发,对于<select>元素,在其选项改变时触发。

3)focus:当前字段获得焦点时触发

关于blur和change事件触发的顺序各个浏览器并不相同。

二、文本框脚本

要表现文本框,必须将<input>元素的 type 特性设置为"text"。而通过设置 size 特性,可以指
定文本框中能够显示的字符数。通过 value 特性,可以设置文本框的初始值,而 maxlength 特性则用
于指定文本框可以接受的最大字符数

相对而言,<textarea>元素则始终会呈现为一个多行文本框。要指定文本框的大小,可以使用 rows
和 cols 特性。其中, rows 特性指定的是文本框的字符行数,而 cols 特性指定的是文本框的字符列数
(类似于<inpu>元素的 size 特性)。与<input>元素不同, <textarea>的初始值必须要放在
<textarea>和</textarea>之间

另一个与<input>的区别在于,不能在 HTML 中给<textarea>指定最大字符数。

无论这两种文本框在标记中有什么区别,但它们都会将用户输入的内容保存在 value 属性中。可
以通过这个属性读取和设置文本框的值

我们建议读者像上面这样使用 value 属性读取或设置文本框的值,不建议使用标准的 DOM 方法。

原因很简单:对 value 属性所作的修改,不一定会反映在 DOM 中。因此,在处
理文本框的值时,最好不要使用 DOM 方法。

一)选择文本

1.select()方法:这个方法用于选择文本框中的所有文本。在调用 select()
方法时,大多数浏览器(Opera 除外)都会将焦点设置到文本框中。这个方法不接受参数,可以在任何
时候被调用 。

2.select事件:在选择了文本框中的文本时,就会触发 select
事件。不过,到底什么时候触发 select 事件,还会因浏览器而异 。在调用 select()方法时也
会触发 select 事件

3.获得选择的文本:

虽然通过 select 事件我们可以知道用户什么时候选择了文本,但仍然不知道用户选择了什么文本。
HTML5 通过一些扩展方案解决了这个问题,以便更顺利地取得选择的文本。该规范采取的办法是添加
两个属性: selectionStart 和 selectionEnd。这两个属性中保存的是基于 0 的数值,表示所选择
文本的范围(即文本选区开头和结尾的偏移量)

function getSelectedText(textbox){
return textbox.value.substring(textbox.selectionStart, textbox.selectionEnd);
}

IE8 及更早的版本中有一个 document.selection 对象,其中保存着用户在整个文档范围内选择
的文本信息;也就是说,无法确定用户选择的是页面中哪个部位的文本。不过,在与 select 事件一起
使用的时候,可以假定是用户选择了文本框中的文本,因而触发了该事件。要取得选择的文本,首先必
须创建一个范围 ,

4.选择部分文本

HTML5 也 为 选 择 文 本 框 中 的 部 分 文 本 提 供 了 解 决 方 案 , 即 最 早 由 Firefox 引 入 的
setSelectionRange()方法。现在除select()方法之外,所有文本框都有一个setSelectionRange()
方法。这个方法接收两个参数:要选择的第一个字符的索引和要选择的最后一个字符之后的字符的索引

要看到选择的文本,必须在调用 setSelectionRange()之前或之后立即将焦点设置到文本框。

IE选择部分文本:略

三、选择框脚本

选择框是通过<select>和<option>元素创建的。HTMLSelectElement的重要属性和方法:

1)add(new,old):向控件插入新的<option>元素,其位置在old项之前。

2)options:控件中所有<option>的HTMLCollection

3)remove(index):移除指定位置的<option>

4)selectedIndex:给予0的选中项索引。多选控件只保存第一项。

5)size:选择框可见行数

选择框的 type 属性不是"select-one",就是"select-multiple",这取决于 HTML 代码中有
没有 multiple 特性。选择框的 value 属性由当前选中项决定,相应规则如下。
? 如果没有选中的项,则选择框的 value 属性保存空字符串。
? 如果有一个选中项,而且该项的 value 特性已经在 HTML 中指定,则选择框的 value 属性等
于选中项的 value 特性。即使 value 特性的值是空字符串,也同样遵循此条规则。
? 如果有一个选中项,但该项的 value 特性在 HTML 中未指定,则选择框的 value 属性等于该
项的文本。
? 如果有多个选中项,则选择框的 value 属性将依据前两条规则取得第一个选中项的值

在DOM中,每个<option>元素都有一个HTMLOptionElement对象表示。该对象的重要属性:

1)index:当前选项在集合中的索引

2)selected:当前选项是否被选中

3)text:选项的文本

4)value:选项的值

一)选择选项

对于只允许选择一项的选择框,访问选中项的最简单方式,就是使用选择框的 selectedIndex 属 性:

var selectedOption = selectbox.options[selectbox.selectedIndex];

对于可以选择多项的选择框, selectedfIndex 属性就好像只允许选择一项一样。设置
selectedIndex 会导致取消以前的所有选项并选择指定的那一项,而读取 selectedIndex 则只会返
回选中项中第一项的索引值 。

另一种选择选项的方式,就是取得对某一项的引用,然后将其 selected 属性设置为 true。例如,
下面的代码会选中选择框中的第一项:

selectbox.options[0].selected = true;

与 selectedIndex 不同,在允许多选的选择框中设置选项的 selected 属性,不会取消对其他选中项
的选择,因而可以动态选中任意多个项。但是,如果是在单选选择框中,修改某个选项的 selected 属性则
会取消对其他选项的选择。需要注意的是,将 selected 属性设置为 false 对单选选择框没有影响 。

二)添加选项

方式一:

var newOption = document.createElement("option");
newOption.appendChild(document.createTextNode("Option text"));
newOption.setAttribute("value", "Option value");
selectbox.appendChild(newOption);

方式二:使用option构造函数

var newOption = new Option("Option text", "Option value");
selectbox.appendChild(newOption); //在 IE8 及之前版本中有问题

方式三:使用选择框的add()方法

var newOption = new Option("Option text", "Option value");
selectbox.add(newOption, undefined); //最佳方案

如果你想将新选项添加到其他位置(不
是最后一个),就应该使用标准的 DOM 技术和 insertBefore()方法。

三)移除选项

方式一:removeChild()方法

方式二:选择框的remove()方法

方式三:将相应的选项设置为0

selectbox.options[0] = null; //移除第一个选项

四)移动和重排选项

活学活用appendChild()和insertBefore()方法

四、表单序列化

五、富文本编辑

原文地址:https://www.cnblogs.com/Shadowplay/p/8506748.html

时间: 2024-07-30 16:23:44

JavaScript基础笔记(十)表单脚本的相关文章

JavaScript笔记:表单脚本

JavaScript最初的应用之一,就是分担服务器处理表单的责任,打破处处依赖服务器的局面. 1.表单的基础知识 在javascript中,表单是用HTMLFormElement类型来表示的.HTMLFormElement继承了HTMLElement,因而与其他HTML元素有相同的默认属性,不过HTMLFormElement也有它自己独有的属性和方法: acceptCharset:服务器能够处理的字符集 action:接受请求的URL elements:表单中所有控件的集合 enctype:请求

JS学习笔记7_表单脚本

1.获取表单及表单元素引用的方式 var mForm = document.forms[formName];获取表单引用 mForm.elements[elemName]获取表单元素,如有同名的,则得到一组元素(例如radio button) 2.表单元素的常用属性.方法和事件 属性: name:字段名 value:字段值 type:字段类型,例如button, radio等等 readOnly:设置只读 disabled:设置禁用 方法: focus():获得焦点 blur():取消焦点 事件

javascript高级程序设计 第十四章--表单脚本

javascript高级程序设计 第十四章--表单脚本 在HTML中表单由<form>元素表示,在js中表单对应的是HTMLFormElement类型,这个类型也有很多属性和方法:取得表单元素的引用还是为它添加id特性,用DOM操作来获取表单元素:提交表单:把<input>或<button>元素的type特性设置为"submit",图像按钮把<input>元素的type特性设置为"image",也可以调用submit(

JavaScript高级程序设计第14章表单脚本 (学习笔记)

第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有机会验证数据并决定要不要提交表单 1.preventnDefault(event):可以用在表单数据无效时不发给服务器,对于动态绑定的onclick 事件. 2.Submit()方法也可以提交表单,但是不会触发submit事件,所以在使用时须先验证表单数据, 如:<%response.write(t

JavaScript高级程序设计之表单基础

A FORM <form id='form' action='http://a-response-url' method="post"> <!--maxlength 最大值 placeholder 占位符 autofocus 自动聚焦--> <input type='text' name='name' size='20' maxlength='10' placeholder='initial' autofocus /><br /> <

bootstrap基础学习【表单含按钮】(二)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>bootstrap基础学习[表单](二)</title> <link rel="stylesheet" href="css/bootstrap.min.css" /> </head> <body style="padd

深入理解表单脚本系列第一篇——表单对象

× 目录 [1]表单属性 [2]表单事件 [3]表单方法 前面的话 javascript最初的一个应用就是分担服务器处理表单的责任,打破处处依赖服务器的局面.尽管目前的web和javascript已经有了长足的发展,但web表单的变化并不明显.由于web表单没有为许多常见任务提供现成的解决方法,很多开发人员不仅会在验证表单时使用javascript,而且还增强了一些标准表单控件的默认行为.本文是表单脚本系列第一篇——表单对象 表单属性 在HTML中,表单是由form元素来表示的,而在javasc

Symfony2学习笔记之表单

对于一个Web开发者来说,处理HTML表单是一个最为普通又具挑战的任务.Symfony2集成了一个Form组件,让处理表单变的容易起来.在这一节里,我们将从基础开始创建一个复杂的表单,学习表单类库中最重要的内容. Symfony2 的Form组件是一个独立的类库,你可以在Symfony2项目之外使用它. 创建一个简单的表单:假设你要创建一个应用程序的todo列表,需要显示一些任务.因为你的用户需要编辑和创建任务,所以你需要创建一个表单.在你开始之前,首先来看通用的Task类,用来表示和存储一个单

Vue基础篇--7表单输入绑定input

Vue基础篇--7表单输入绑定input 1.基础语法 你可以用 v-model 指令在表单 . 及 `元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但v-model` 本质上不过是语法糖.它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理. 注意: v-model 会忽略所有表单元素的 value.checked.selected 特性的初始值而总是将 Vue 实例的数据作为数据来源.你应该通过 JavaScript 在组件的 data