摘要:文本框脚本有两种方式表现文本框的单行文本框和的多行文本框。对于单行文本框,通过特性可以指定文本框能够显示的字符数,通过特性访问其内容,而则用于指定其可以接受的最大字符数。
title: 表单脚本
date: 2016-12-19 15:17
tags: JavaScript
在 HTML 中,表单由 元素来表示,但是在 JavaScript 中,表单对应的是 HTMLFormElement 类型,它具有的一些独有的属性和方法。
action: 接收请求的 URL
elements: form 中所有控件的集合
length: form 中控件的数量
method: 要发送的 HTTP 请求类型
name: 表单的名称
reset(): 重置 form 域为默认值
submit(): 提交 form
target: 用于发送请求和接收响应的窗口的名称
acceptCharset: 服务器能够处理的字符集
enctype: 请求的编码类型。
查找表单// 通过 ID 查找 var form = document.querySelector("#form1"); // 通过 document.forms 集合查找 var firstForm = document.forms[0] // 索引查找 var myForm = document.forms["form2"] // 取得 name 为 form2 的表单提交表单
// 通用提交表单 // 自定义提交表单 // 图像按钮阻止表单提交的默认行为
var form = document.querySelector("#myForm") EventUtil.addHandler(form, "submit", function(event){ // 取得事件对象 event = EventUtil.getEvent(event) var target = EventUntil.getTarget(event) // 阻止默认事件 EventUtil.preventDefault(event); // 取得提交按钮 var btn = target.elements["submit-btn"] // 验证表单 // do something // 禁用提交按钮 btn.disabled = true })
为避免用户重复提交,应该在第一次提交表单以后就禁用提交按钮,或者利用 onsubmit 事件处理程序取消后续的表单提交操作
如上,要在第一次点击后就禁止提交,只需要监听 submit 事件,并在该事件发生时禁用提交表单按钮即可。
表单字段通过 form 的 elements 属性可以获得所有表单字段,然后可以安装索引或者 name 特性来访问它们。
如果多个表单控件都使用一个 name ,那么会放回一改 name 命名的一个 NodeList 集合
共有的表单字段属性:
disabled: 布尔值,表示当前字段是否被禁用
form: 指向所属的 form
name: 当前字段的名称
type: 当前字段的类型
除了 之外,所有的表单都有 type 属性,对于 元素,
该值等于 HTML 的 type 值。
对于
:type 属性值 select-one
:type 属性值 select-multiple
每个表单字段都有两个方法:focus() 和 blur() 方法。
此外,所有表单字段都支持下列 3 个事件:
blur: 字段失去焦点时 触发
focus: 字段获得焦点时触发
change: 对于 和 元素,在它们失去焦点且 value 值改变时触发;对于 元素,在其选项改变时触发。
0x01 文本框脚本有两种方式表现文本框: 的单行文本框和
对于单行文本框,通过 size 特性可以指定文本框能够显示的字符数,通过 value 特性访问其内容,而maxlength则用于指定其可以接受的最大字符数。
相对于 要指定文本框的大小可以使用 rows 和 cols 特性。
选择文本和 都支持 select() 方法用于选中所有文本,而与此对应的是 select 事件。
select事件在选中文本的时候就会触发
var textbox = form.elements["textbox"] textbox.onselect = function(){ alert(textbox.value) }
但是通过 select 事件只能确定用户何时选择了文本,却不知道用户到底选择了哪些文本,基于此 HTML5 添加了 selectionStart 和 selectionEnd 方法。
要取得用户在文本框中选取的文本,可以使用如下方法:
textbox.onselect = function(){ alert(textbox.value.substring(textbox.selectionStart, textbox.selectionEnd)) }HTML5 约束验证 API
任何标注有 required 的字段,在提交表单时都不能空着。
该属性适用于 ,, 字段。
选择框通过 元素和 元素创建,它们同属于 HTMLSelectElement 类型,为了方便交互,该类型提供了如下属性:
add(newOption, relOption): 插入新的 元素,在相关项之前
multiple: 布尔值,是否允许多项选择
options: 所有的 元素集合
remove(index): 移除给定位置的索引项
选择框 的 type 属性值不是 select-one 即是 select-muitiple
为了便于访问数据,每个 元素都有一个 HTMLOptionElement 对象,该对象具有如下属性:
index: 当前选择项在 options 集合中的索引
selected: 布尔值,表示当前选项是否被选中
select: 选项的文本
value: 选项的值
选择项元素的值,就是选中的 元素的 value 特性值。如果没有 value 特性,则是 元素的文本值
对于只能选择一项的选择框,最简单的方式就是使用 selectedIndex 属性:
var selectedOption = selectbox.options[selectbox.selectedIndex]
而对于可以选择多项的选择框,我们需要循环遍历选择集合,然后测试每个选择项的 seleted 属性
function getSelectedOption(selectBox){ var result = new Array() var option = null for(let i=0,len = selectBox.options.length;i < len;i++){ option = selectBox.options[i] if(option.selected){ result.push(option) } } return result } var selectBox = document.querySelector("#selectBox") var selectedOptions = getSelectedOption(selectBox) // 获得所有被选中的项0x03 表单序列化
在表单对服务器发送数据之前,需要将表单中的有效数据进行格式化的编码,即表单序列化。
下面的 serialize 函数可以实现表单的序列化操作:
function serialize(form){ let parts = [],field = null, i, len, j, optLen, option, optValue; for(i =0, len = form.elements.length; i在整个表单序列化的过程中,稍微复杂一点的就是 元素了,它能是单选框或者多选框,那么我们需要去遍历控件中的每一项。当不存在 value 特性时,使用 text 的值,我们使用了 hasAttribute() ,而在 IE 中需要使用 specified 特性。
对于单选按钮和复选按钮,需要检查其 checked 属性书否为 false,是则退出 switch 循环。若为 true 则将其键值对进行编码,推到 parts 数组。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/86568.html
摘要:处理表格和提交等等重置表单重置表单应该使用或当用户单击重置按钮重置表单时,会触发事件,可以在必要的时候取消重置操作另外也可以通过脚本调用方法重置表单,在调用方法重置表单时会触发事件。在中,表单中新增加了属性,自动把焦点移动到相应字段。 HTMLFormElement继承了HTMLElement,它自己独有的属性和方法有: acceptCharset:服务器能够处理的字符集,等价于HT...
摘要:表单如果表单内没有按钮,只有元素,那么这个可以升级为按钮。输入框选中高亮,输入非数字,改变颜色可设置,不能设置而则可以,但不能设置最大字符数。 form 表单 如果form表单内没有submit按钮,只有button元素,那么这个button可以升级为submit按钮。 form 表单用来向服务器提交信息,常用属性 action:提交表单的地址 name:页面中可能不止一个表单,...
摘要:文本框获得焦点时,选中其中所有的文本思路利用焦点事件事件,在文本框获得焦点时,利用其方法选中所有文本。自动切换焦点思路利用事件检测用户输入新字符后,文本框内的字符串是否已经达到最大长度,若达到最大长度,则将焦点切换至下一个文本框。 JavaScript 表单脚本 通过 document.forms 可以获得一个包含当前页面中所有表单的集合 HTMLFormElement 接口 下面是这...
摘要:浏览器如何将数据发送给服务器对表单字段的名称和值进行编码,使用和号分隔不发送禁用的表单字段只发送勾选的复选框和单选按钮不发送为和的按钮多选框中每个选中的值单独一个条目在单击提交按钮提交表单的情况下,也会发送提交按钮。否则不发送提交按钮。 浏览器如何将数据发送给服务器: 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送t...
阅读 2874·2021-11-24 09:39
阅读 1139·2021-11-02 14:38
阅读 4088·2021-09-10 11:26
阅读 2725·2021-08-25 09:40
阅读 2281·2019-08-30 15:54
阅读 462·2019-08-30 10:56
阅读 2711·2019-08-26 12:14
阅读 3196·2019-08-26 12:13