easyui根据select下拉框内容更新表单内容_DOM总结:表单操作

本文详细介绍了HTML5中的表单元素,包括form属性、元素验证、提交操作,以及label、input、select、option等元素的特性和用法。还探讨了表单验证的规则、接口和异常状态,并讨论了无刷新表单提交的方法,如使用iframe和AJAX。
摘要由CSDN通过智能技术生成

1、构建表单:所有的表单都是以一个form元素开始

0c50f443ec581cd1e095df887811a03a.png

我们最好再做一下验证,比如,某些必填项要提示用户。

学习的内容:元素(表单构建的元素)、验证(表单验证相关的操作)、提交(表单提交相关的操作)

form元素

cf02276c45fb3dc61e7bf43a0bf0e3b0.png

a40a70d9c5664dbc63dbfd99e7537643.png

ccce7a32c51a38f53ecb007d753fa379.png

form的两个重要属性:elements 和 length。

b6eeb17d1ea64540e5a8c69b1bb84175.png

a51510c7a2ca45611a4852e0f984326a.png

即使是在form='a'里面的表单空间,如果指明form='b',是formb的子孙表单控件,而非A的。

form的length属性,等价于elements.length.这个集合的个数。

7ecf706bef9227b96ea6878348d47236.png

通过form来取到它里面的表单控件。

e96428ebd2dd16ffd687107b7108b956.png

e918b9145106e638675082e7e24f8dd7.png

重点说下通过名称来取控件的规则:form[name]

->返回id或name为指定名称的表单控件(除图片按钮);

->如果结果为空,则返回id为指定名称的img元素。

379aa2601180c6ca56e9ac50017d79d1.png

1f6af15277c2fceefa95d84068bee359.png

-> 如果有多个同名的元素,则返回这些元素的动态节点集合。

-> 一旦用指定名称取过该元素,则不管该元素的id或name怎么变化,只要节点还在页面上均可使用原名称获取该元素。

d2c4ca0a37c7e34ec61b9323b50de2ef.png

form除了上述属性,还有接口 reset() submit() checkValidity()

reset()

-> 可重置元素:input、keygen、output、select、textarea

-> 当我们在表单做reset操作时,就会触发reset事件,阻止该事件的默认行为可取消重置;

-> 元素重置时不再触发元素上的change和input事件

bb0d48bb5211db5493ff71acea3f5daf.png

label元素

指定了label的for属性后,浏览器会自动生成control属性。用来关联这个节点。form指定了这个表单控件属于哪个表单,也是由浏览器动态生成的。

9e95787cd6916fc66703f24979a80411.png

label.htmlFor

-> 关联表单控件激活行为,点击这个表单控件的行为就和这个表单保持一致。

-> 可关联元素:button、input(除hidden外),keygen、meter、output、progress、select、textarea

a3b017a14b1145a39e97b58b09e7fcd1.png

这样就可以用各种复杂的图片来美化上传文件表单控件。

label.control

-> 如果指定了for属性,则为该for属性关联对应的id的可关联元素

-> 如果没有指定for属性,则为第一个子孙可关联元素。

f42e4799093240ef2517ee6416a6df0a.png

label.form

-> 关联归属表单 所有的表单控件也都有这个属性

-> 可关联元素:button、fieldset、input、keygen、label、object、output、select、textarea

-> 对应的form的值是浏览器自己算的,是一个只读属性,不可在程序过程中直接修改。

d5527964687246c15c9861a4da228fbc.png

input元素

input.type 属性

-> 控件外观 不同的type有不同的展示效果

-> 数据类型 不同的type有不同的数据类型,如果不指定,则默认为 text

select 元素

选项列表里面选择一个选项 (子元素:optgroup、 option)

属性:name、value、multiple、options(动态集合)、selectedOptions(所有已经选中的选项的动态集合)、selectedIndex(第一个选中的选项的索引值,如果没有选中的,则返回-1)、add(element [, before])在指定的元素之前添加选项,如果没有指定参照物,则在最后添加这个选项、remove([index])用来表示删除某个选项。

optgroup元素(把一些相关性比较大的选项作为分组)的属性:disabled(当前这个分组里的选项都是不可选的)、label(必选的,我们在分组的时候可以看到某些选项下面归属于哪个分组的,对这个分组的说明,就用label来表示)。

option元素的属性:disabled、label、value、text、index、selected、defaultSelected。

select主要包含对选项的操作:

创建选项(1- document.createElement 2-new Option([text [, value [, defaultSelected [,selected]]]])

0c2e5dcab52f39b6d3b4a840946142bd.png

添加(1- insertBefore 2- select.add)

50923e838b2798b47ec344b4543bd9a2.png

删除(1-removeChild 2-select.remove)

3d2245d3eaa98c1a906e20df45b50350.png

select元素级联下拉选择器:

9a2c6b1cac504f4a399590ee4d94f540.png

0fea9ecdf2e2b94576306934fc1a37c3.png

292da99f5ebb39788a04aa5e33e73b85.png

a27541727afb3102daaed6a2f3bd8701.png

textarea元素

d61d4e10f01d4aecc261460d06f019bb.png

textarea.selection 选择区域,没有中的时候,selectionStart 和 selectionEnd都是光标位置。当选中某个区域时,selectionStart 和 selectionEnd会到相应的位置。

selectionDirection:键盘上按下了shift功能键或者方向键,如果指定了forward,则shift+左右键改变的是selectionEnd。如果指定是backward,则shift+左右键改变的是selectionStart。

@输入提示

44c7cb5764e284cd558dd279822e161a.png

还有一些不常用的元素:fieldset、button、keygen、output、progress、meter等。

支持情况:

How well does your browser support HTML5?​html5test.com

表单验证:

哪些元素需要做表单验证:button、input、select、textarea

以下情况不做验证:1-input 的 type值为 hidden、reset、button之一的话,不用做验证 2-button的type值为reset或者button 也不用做,3-input或textarea 只读 也就是readonly时,不用做验证。4-可验证元素作为datalist的子孙节点时。5-元素为disabled时。

验证时的接口:

ff1e776a2ec7b424192c58b52608438e.png

1-willvalidate:表单在提交时是否会验证 2-checkValidity 用来验证元素,通过验证会返回true,否则会触发元素上的invalid事件。3-validity 存储验证结果,不同的异常状态都会在这个属性下面标识出来。4-validationMessage 显示验证的异常信息 5-setCustomeValidity(message)传入一个自定义的消息,用来显示异常显示的信息。主要用来做自定义的验证错误。

validity(包含内容)

f5e0ec00dfaccd84f71201883de618bf.png

自定义异常

1-oninvalid 2-setCustomValidity

0beab599b17d5922665b43d41c6d89fd.png

禁止验证:

f972d3d0849d8580b2fd67826dbcd133.png

表单隐式提交:

如: 聚焦在输入框时回车提交表单 需要满足任意一个条件:1-表单有非禁用的提交按钮 2-没有提交按钮时,不超过一个类型为text、search、url、email、password、date、time、number的input元素(只有一个这样的元素)。

提交过程:

1- 浏览器根据表单提交的enctype指定的值,构建要提交的数据结构。2- 使用method指定的方式发送数据到action指定的目标上。

浏览器构建提交数据:

1- 浏览器从可提交元素中提取数据组装成指定的数据结构 2- 可提交元素:button、input、keygen、object、select、textarea

提交过程用的编码方式(enctype):

1-application/x-wwww-form-urlencoded [默认] 2- multipart/form-data 3- text/plain 这三种方式都是在请求的 Content-typ处,组织形式:1- &符号分割 2-字节流 3-回车和键值对

特殊案例:

1-->name='isindex' && type='text' 1- 编码方式为url,作为表单的第一个提交元素,提交时只发送value值,不会包含name

f9229636135598a1e6ce0c9e6718baa7.png

2--> name = '_charset_' && type='hidden' 1-没有设置value值,提交时value自动用当前提交的字符集填充。

8869e12f79036cb62b92a487eec7b4b0.png

提交:

submit(),除了用提交按钮提交表单之外,还可以用这个接口。form.submit()

不管用什么形式去提交表单,都会触发一个onsubmit事件。在这个事件触发的时候,我们可以做一些表单提交之前的数据验证。如果验证没有通过,可以通过这个事件的默认行为来取消表单提交。虽然表单有自带的一些验证规则,但是也有很多情况,自带的规则没有体现出来。这样我们就可以在onsubmit这个事件中去做验证。

cccf0bf716692d60300207148556cc34.png

无刷新表单提交:

比较常见的可能是ajax的方式,再介绍下另外一种方式:用iframe做中间代理,结合表单的form、target来做无刷新的表单提交。原理:页面上放一个iframe和一个form元素。

91fa684ae74886e5c77a1de7f4e4c1f7.png

58ececf2334c629ce74559957ce69465.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值