1、表单基础
<form>
标签,HTMLFormELement的属性和方法acceptCharset
服务器科技手段字符集(accept-charset)action
请求的URLelements
表单中所有控件的HTMLCollectionenctype
请求的编码类型length
表单中控件数量method
HTTP请求方法name
表单名字reset()
将表单字段重置为默认值submit()
提交表单target
用于发送请求和接收响应的窗口的名字
document.forms
可以获得所有表单元素
1、提交表单
- 通过用户点击提交按钮或图片按钮提交
<!-- 通用提交按钮 -->
<input type="submit" value="Submit Form">
<!-- 自定义提交按钮 -->
<button type="submit">Submit Form</button>
<!-- 图片按钮 -->
<input type="image" src="graphic.gif">
- 上面的按钮,焦点在某个控件上,回车也可以提交
let form = document.getElementById("myForm")
form.addEventListener("submit", (event)=> {
// 阻止表单提交
event.preventDefault()
})
- 通过JS主动调用
form.submit()
,不会触发submit事件 - 防止多次提交,可以提交后禁用提交按钮或者通过事件处理程序取消之后的提交
2、重置表单
- 用户点击重置按钮提交
<!-- 通用重置按钮 -->
<input type="reset" value="Reset Form">
<!-- 自定义重置按钮 -->
<button type="reset">Reset Form</button>
- 恢复默认值,触发reset事件
let form = document.getElementById("myForm")
form.addEventListener("reset", (event)=> {
// 阻止表单提交
event.preventDefault()
})
- 通过JS主动调用
form.reset()
,也会触发reset事件
3、表单字段
- elements集合是一个有序列表,包含
<input>
、<textarea>
、<button>
、<select>
和<fieldset>
元素 - 可以通过索引位置或name属性来访问
- 如果多个表单控件使用一个name,会返回所有同名元素的HTMLCollection集合
1、表单字段的公共属性
-
除了
<fieldset>
外,表单字段都有一组相同的属性disabled
:布尔值,表示表单字段是否禁用form
:指针,指向表单字段所属的表单,只读name
:字符串,这个字段的名字readOnly
:布尔值,表示这个字段是否只读tabIndex
:数值,表示这个字段在按Tab键时的切换顺序type
:字符串,表示字段类型,如"checkbox"、"radio"等value
:要提交给服务器等字段值。对文件输入字段来说,这个属性是只读的,仅包含计算机上某个文件的路径。
-
type可以用于除了
<fieldset>
外任何字段,对于<input>
,这个值等于HTML的type属性,对其他元素:描述 示例HTML 类型的值 单选列表 <select>...</select>
select-one 多选列表 <select multiple>...</select>
select-mutiple 自定义按钮 <button>...</button>
submit 自定义非提交按钮 <button type="button">...</button>
button 自定义重置按钮 <button type="reset">...</button>
reset 自定义提交按钮 <button type="submit">...</button>
submit
2、表单字段的公共方法
focus()
把浏览器焦点设置到表单字段- HTML5新增
autofocus
属性,支持自动设置焦点
- HTML5新增
blur()
从元素上移除焦点
3、表单字段公共事件
blur
:在字段失去焦点时触发change
:在<input>
和<textarea>
元素的value发生变化且失去焦点时触发,或者在<select>
元素中选中项发生变化时触发focus
:在字段获得焦点时触发
2、文本框编程
<input>
默认显示文本框- 省略
type
属性会以text作为默认值 size
属性指定文本框宽度,以字符数计算value
指定文本框初始值maxLength
:指定文本框允许的最多字符数
- 省略
<textarea>
总是会创建多行文本rows
指定这个文本框高度,字符数计量cols
指定这个文本框宽度,字符数计量- 初始值必须在标签之间
1、选择文本
- 两种文本框都支持
select()
方法,用来全部选中文本框的文本
1、select事件
- 当选中文本框中的文本或调用
select()
方法时,会触发select
事件
2、取得选中文本
selectionStart
、selectionEnd
,分别表示文本选区的起点和终点
function getSelectedText(textbox) {
return textbox.value.substring(textbox.selectionStart,
textbox.selectionEnd)
}
- IE老版本
document.selection.createRange().text
3、选中部分文本
setSelectionRange()
- 参数:要选择的第一个字符的索引,停止选择的字符的索引
- IE老版本
createRange()
创建范围- 使用
collapse()
把范围折叠到文本框的开始 moveStart()
、moveEnd()
范围方法确定范围。- 使用
select()
选中文本
- 使用
2、输入过滤
1、屏蔽字符
-
keypress
屏蔽输入的字符,如屏蔽非数字- 同时避免屏蔽功能键,Ctrl组合键
textbox.addEventListener('keypress',(event)=> { if(!/\d/.test(String.formCharCode(event.charCode)) && event.charCode > 9 && !event.ctrlKey) { event.preventDeafult() } })
2、处理剪贴板
-
与剪切板相关的事件:
beforecopy
:复制操作发生前触发copy
:复制操作发生时触发beforecut
:剪切操作发生前触发cut
:剪切操作发生时触发beforepaste
:粘贴操作发生前触发paste
:粘贴操作发生时触发
-
剪贴板的数据可以通过window或event对象的
clipboardData
对象获取getData()
- 从剪切板检索字符串数据,接收一个要检索的数据格式参数
- IE text/URL
- 其他 MIME text -> text/plain
- 从剪切板检索字符串数据,接收一个要检索的数据格式参数
setData()
- 参数:指定数据类型,要放到剪贴板上的文本
- IE text/URL
- 其他 MIME
- 参数:指定数据类型,要放到剪贴板上的文本
clearData()
-
在
paste
事件中,可以确定剪贴板上的文本是否有效,如果无效旧取消默认行为
3、自动切换
- 完成前面字段时自动切换到下一个字段
- 可以在完成最大输入允许输入字符数时通过
foucs()
自动切换焦点。
4、HTML5约束验证API
1、必填字段
required
,如果没有填写会阻止表单提交
2、更多输入类型
<input>
新的type值email
要求输入电子邮箱地址url
确保输入的文本匹配URL- 除非设置了
required
否则传空字段是有效的。
3、数值范围
- 期待某种数值输入的type:number、range、datetime、datetime-local、date、month、week和time
- 可以指定
min
、max
、step
属性 stepUp()
、stepDown()
接收一个可选参数,从当前值加上或减去的数值,默认1
4、输入模式
pattern
属性,指定正则表达式,限制输入匹配的字符- 只会在提交的时候验证
5、检测有效性
checkValidity()
检测表单中任意给定字符是否有效- 如检测是否必填,是否匹配pattern属性
- 可以直接检测整个表单是否有效
validity
属性customError
:如果设置了 setCustomValidity()就返回 true,否则返回 false。patternMismatch
:如果字段值不匹配指定的 pattern 属性则返回 true。rangeOverflow
:如果字段值大于 max 的值则返回 true。rangeUnderflow
:如果字段值小于 min 的值则返回 true。stepMisMatch
:如果字段值与 min、max 和 step 的值不相符则返回 true。tooLong
:如果字段值的长度超过了 maxlength 属性指定的值则返回 true。typeMismatch
:如果字段值不是"email"或"url"要求的格式则返回 true。valid
:如果其他所有属性的值都为 false 则返回 true。与 checkValidity()的条件一致。valueMissing
:如果字段是必填的但没有值则返回 true
6、禁用验证
novalidate
属性禁止任何验证- 可以通过JS属性
noValidate
检索或设置
- 可以通过JS属性
- `formnovalidatae 指定通过该按钮提交无须验证
- 可以通过JS属性
formNoValidate
设置
- 可以通过JS属性
3、选择框编程
<select>
、<option>
元素创建的。- HTMLSelectElement额外属性方法:
add(newOption, relOption)
:在relOption前向控件添加新<option>
multiple
:布尔值,是否允许多选options
:控件中所有<option>
元素集合remove(index)
:移除指定位置的选项selectedIndex
:选中项基于0的索引值,如果没有选择项返回-1。多选返回第一个选项size
:选择框中可见的行数
- 选择框的value属性规则:
- 没有选中值,则选择框的值时空字符串
- 如果有一个选中项,且其value属性有值,则选择框的值就是选中项value属性的值。
- 如果有一个选中项,且其value属性没有值,则选择框的值时该项的文本内容。
- 如果有多个选中项,则选择框的值根据前两条规则取第一个选中项的值
- HTMLOptionElement有以下属性
index
:选项在option集合中的索引label
:选项的标签selected
:布尔值,表示是否选中了当前选项text
:选项中的文本value
:选项的值
1、选项处理
- 只允许选择一项的选择框,获取方式是通过
selectedIndex
属性。 - 允许多选的选择框,循环检测选择项的
selected
属性
2、添加选项
-
DOM方法
-
Option构造函数创建新选项,接收text、value两个参数
-
add()
方法,参数是要添加的新选项和要添加到其前面的参考选项。- 如果添加到末尾,第二个参数应该是null
3、移除选项
- DOM方法
removeChild()
- 选择框
remove()
方法,传入索引 - 直接将选项设置为null
4、移动和重排选项
appendChild()
方法会从其父元素移除然后插入指定位置。insertBefore()
插入到指定位置
4、表单序列化
-
字段名和值是 URL 编码的并以和号(&)分隔。
-
禁用字段不会发送。
-
复选框或单选按钮只在被选中时才发送。
-
类型为"reset"或"button"的按钮不会发送。
-
多选字段的每个选中项都有一个值。
-
通过点击提交按钮提交表单时,会发送该提交按钮;否则,不会发送提交按钮。类型为"image"的
<input>
元素视同提交按钮。 -
<select>
元素的值是被选中<option>
元素的 value 属性。如果<option>
元素没有 value 属性,则该值是它的文本。
5、富文本编辑
- 原理:在空白HTML文件中嵌入一个iframe。通过designMode属性设置为on,将这个空白文档变成可编辑的。
1、使用contenteditable
- 给任何元素设置
contenteditable
属性即可。 - 通过设置
contentEditable
切换编辑状态- 值:true / false / inherit
2、与富文本交互
document.execCommand()
- 三个参数
- 要执行的命令
- 表示浏览器是否为命令提供用户界面的布尔值 (始终false)
- 执行命令必须的值
- 三个参数
queryCommandEnabled()
用于确定当前选中文本或光标所在位置是否可以执行相关命令。queryCommandState()
确定相关命令是否应用到了当前文本选区。queryCommandValue()
返回执行命令时使用的值
3、富文本选择
-
getSelection()
方法可以获得富文本编辑器的选区 -
返回的对象有以下属性
-
anchorNode
:选区开始的节点。 -
anchorOffset
:在 anchorNode 中,从开头到选区开始跳过的字符数。 -
focusNode
:选区结束的节点。 -
focusOffset
:focusNode 中包含在选区内的字符数。 -
isCollapsed
:布尔值,表示选区起点和终点是否在同一个地方。 -
rangeCount
:选区中包含的 DOM 范围数量。
-
-
有以下方法
-
addRange(range)
:把给定的 DOM 范围添加到选区。 -
collapse(node, offset)
:将选区折叠到给定节点中给定的文本偏移处。 -
collapseToEnd()
:将选区折叠到终点。 -
collapseToStart()
:将选区折叠到起点。 -
containsNode(node)
:确定给定节点是否包含在选区中。 -
deleteFromDocument()
:从文档中删除选区文本。与执行 execCommand("delete", false, null)命令结果相同。 -
extend(node, offset)
:通过将 focusNode 和 focusOffset 移动到指定值来扩展选区。 -
getRangeAt(index)
:返回选区中指定索引处的 DOM 范围。 -
removeAllRanges()
:从选区中移除所有 DOM 范围。这实际上会移除选区,因为选区中至少要包含一个范围。 -
removeRange(range)
:从选区中移除指定的 DOM 范围。 -
selectAllChildren(node)
:清除选区并选择给定节点的所有子节点。 -
toString()
:返回选区中的文本内容。
-
4、通过表单提交富文本
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!