## form
## form内容项控制逻辑
form组件的内容子组件包括:input、textarea、checkbox、radio、switch、slider,以及负责提交或重置的button组件。
button可以设置form-type属性为submit或reset,点击时会分别触发form的提交或重置。
在表单submit或reset时,这些表单内容子组件的值会被提交或重置。
注意:目前不支持上述组件之外自行添加表单内容子组件。如有自定义组件,则不能使用form组件提交,需自行通过绑定data的方式获取组件值并自行编码提交数据。
### submit策略差异
form 组件的表单提交,微信小程序的实现策略,与浏览器W3C的策略略有差异。目前uni-app(x)在submit时,app和web上的实现与微信小程序相同。具体是:
- uni-app表单提交的数据是一个对象`{"name": "value"}`。而浏览器标准form是数组,每项为 pair,pair[0] 对应name,pair[1] 对应value 。
- 多个表单子项如果 name 相同,仅保留最后一个表单子项。而浏览器标准form整体是数组,不存在覆盖的情况。
- 设置 disabled 属性的表单子项,仍然会提交。而浏览器标准form提交时会忽略disabled的表单子项。
注意uni-app(x)编译到web平台,也是按uni-app(x)的策略,而不是浏览器的策略。uni-app(x) 的 web平台使用 uni-app 自己的 form 组件,而不是浏览器的 form 标签。
### reset策略差异
reset在浏览器W3C的策略是还原、重置。
在uni-app(x)中,不同平台的策略不同,有的是`还原`,有的是`清空`。
各平台策略如下:
**uni-app-x**
|App |Web |
|:-: |:-: |
|还原(3.97+) |还原(4.0+) |
**uni-app**
|App |Web |微信小程序 |支付宝小程序 |百度小程序 |抖音小程序 |
|:-: |:-: |:-: |:-: |:-: |:-: |
|清空 |清空 |清空 |还原 |清空 |清空 |
1. 还原初始值
```html
读书
写字
```
2. 清空已有值(含初始值和改变后的值)
```html
读书
写字
```