博客列表 >微信小程序官方组件展示之表单组件form源码

微信小程序官方组件展示之表单组件form源码

软件事业部
软件事业部原创
2022年08月25日 13:03:46926浏览

以下将展示微信小程序之表单组件form源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。
功能描述:
表单。将组件内的用户输入的switch input checkbox slider radio picker 提交。
当点击 form 表单中 form-type 为 submit 的 button 组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key。
属性说明:

示例代码:
JAVASCRIPT:

  1. Page({
  2. onShareAppMessage() {
  3. return {
  4. title: 'form',
  5. path: 'page/component/pages/form/form'
  6. }
  7. },
  8. data: {
  9. pickerHidden: true,
  10. chosen: ''
  11. },
  12. pickerConfirm(e) {
  13. this.setData({
  14. pickerHidden: true
  15. })
  16. this.setData({
  17. chosen: e.detail.value
  18. })
  19. },
  20. pickerCancel() {
  21. this.setData({
  22. pickerHidden: true
  23. })
  24. },
  25. pickerShow() {
  26. this.setData({
  27. pickerHidden: false
  28. })
  29. },
  30. formSubmit(e) {
  31. console.log('form发生了submit事件,携带数据为:', e.detail.value)
  32. },
  33. formReset(e) {
  34. console.log('form发生了reset事件,携带数据为:', e.detail.value)
  35. this.setData({
  36. chosen: ''
  37. })
  38. }
  39. })

WXML:

  1. <view class="container">
  2. <view class="page-body">
  3. <form catchsubmit="formSubmit" catchreset="formReset">
  4. <view class="page-section page-section-gap">
  5. <view class="page-section-title">switch</view>
  6. <switch name="switch"/>
  7. </view>
  8. <view class="page-section page-section-gap">
  9. <view class="page-section-title">radio</view>
  10. <radio-group name="radio">
  11. <label><radio value="radio1"/>选项一</label>
  12. <label><radio value="radio2"/>选项二</label>
  13. </radio-group>
  14. </view>
  15. <view class="page-section page-section-gap">
  16. <view class="page-section-title">checkbox</view>
  17. <checkbox-group name="checkbox">
  18. <label><checkbox value="checkbox1"/>选项一</label>
  19. <label><checkbox value="checkbox2"/>选项二</label>
  20. </checkbox-group>
  21. </view>
  22. <view class="page-section page-section-gap">
  23. <view class="page-section-title">slider</view>
  24. <slider value="50" name="slider" show-value ></slider>
  25. </view>
  26. <view class="page-section">
  27. <view class="page-section-title">input</view>
  28. <view class="weui-cells weui-cells_after-title">
  29. <view class="weui-cell weui-cell_input">
  30. <view class="weui-cell__bd" style="margin: 30rpx 0" >
  31. <input class="weui-input" name="input" placeholder="这是一个输入框" />
  32. </view>
  33. </view>
  34. </view>
  35. </view>
  36. <view class="btn-area">
  37. <button style="margin: 30rpx 0" type="primary" formType="submit">Submit</button>
  38. <button style="margin: 30rpx 0" formType="reset">Reset</button>
  39. </view>
  40. </form>
  41. </view>
  42. </view>

使用内置 behaviors
对于 form 组件,目前可以自动识别下列内置 behaviors:

wx://form-field
wx://form-field-group
wx://form-field-button

wx://form-field
使自定义组件有类似于表单控件的行为。 form 组件可以识别这些自定义组件,并在 submit 事件中返回组件的字段名及其对应字段值。这将为它添加以下两个属性。

代码示例:

  1. // custom-form-field.js
  2. Component({
  3. behaviors: ['wx://form-field'],
  4. data: {
  5. value: ''
  6. },
  7. methods: {
  8. onChange: function (e) {
  9. this.setData({
  10. value: e.detail.value,
  11. })
  12. }
  13. }
  14. })


wx://form-field-group
从基础库版本 2.10.2 开始提供支持。
使 form 组件可以识别到这个自定义组件内部的所有表单控件。 例如,页面的结构如下:

  1. <form bindsubmit="submit">
  2. <custom-comp></custom-comp>
  3. <button form-type="submit">submit</button>
  4. </form>

组件 custom-comp 自身结构如下:

  1. <input name="name" />
  2. <switch name="student" />

如果组件 custom-comp 配置有:

  1. Component({
  2. behaviors: ['wx://form-field-group']
  3. })

此时,表单的 submit 事件的 value 中将包含 name 和 student 两个字段。

wx://form-field-button
从基础库版本 2.10.3 开始提供支持。
使 form 组件可以识别到这个自定义组件内部的 button , 如果自定义组件内部有设置了 form-type 的 button ,它将被组件外的 form 接受。 例如,页面的结构如下:

  1. <form bindsubmit="submit">
  2. <input name="name" placeholder="请输入名字"></input>
  3. <custom-comp></custom-comp>
  4. </form>

组件 custom-comp 自身结构如下:

  1. <button form-type="submit">submit</button>

如果组件 custom-comp 配置有:

  1. Component({
  2. behaviors: ['wx://form-field-button']
  3. })

此时点击组件内的 button ,将触发 form 的 submit 事件。

版权声明: 本站所有内容均由互联网收集整理、上传,如涉及版权问题,我们第一时间处理。
原文链接地址:https://developers.weixin.qq.com/miniprogram/dev/component/form.html

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议