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

以下将展示微信小程序之表单组件form源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。

功能描述:

表单。将组件内的用户输入的switch input checkbox slider radio picker 提交。

当点击 form 表单中 form-type 为 submit 的 button 组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key。

属性说明:

示例代码:

JAVASCRIPT

Page({

  onShareAppMessage() {

    return {

      title: 'form',

      path: 'page/component/pages/form/form'

    }

  },

  data: {

    pickerHidden: true,

    chosen: ''

  },

  pickerConfirm(e) {

    this.setData({

      pickerHidden: true

    })

    this.setData({

      chosen: e.detail.value

    })

  },

  pickerCancel() {

    this.setData({

      pickerHidden: true

    })

  },

  pickerShow() {

    this.setData({

      pickerHidden: false

    })

  },

  formSubmit(e) {

    console.log('form发生了submit事件,携带数据为:', e.detail.value)

  },

  formReset(e) {

    console.log('form发生了reset事件,携带数据为:', e.detail.value)

    this.setData({

      chosen: ''

    })

  }

})

WXML

 

<view class="container">

  <view class="page-body">

    <form catchsubmit="formSubmit" catchreset="formReset">

      <view class="page-section page-section-gap">

        <view class="page-section-title">switch</view>

        <switch name="switch"/>

      </view>

      <view class="page-section page-section-gap">

        <view class="page-section-title">radio</view>

        <radio-group name="radio">

          <label><radio value="radio1"/>选项一</label>

          <label><radio value="radio2"/>选项二</label>

        </radio-group>

      </view>

      <view class="page-section page-section-gap">

        <view class="page-section-title">checkbox</view>

        <checkbox-group name="checkbox">

          <label><checkbox value="checkbox1"/>选项一</label>

          <label><checkbox value="checkbox2"/>选项二</label>

        </checkbox-group>

      </view>

      <view class="page-section page-section-gap">

        <view class="page-section-title">slider</view>

        <slider value="50" name="slider" show-value ></slider>

      </view>

      <view class="page-section">

        <view class="page-section-title">input</view>

        <view class="weui-cells weui-cells_after-title">

          <view class="weui-cell weui-cell_input">

            <view class="weui-cell__bd" style="margin: 30rpx 0" >

              <input class="weui-input" name="input" placeholder="这是一个输入框" />

            </view>

          </view>

        </view>

      </view>

      <view class="btn-area">

        <button style="margin: 30rpx 0" type="primary" formType="submit">Submit</button>

        <button style="margin: 30rpx 0" formType="reset">Reset</button>

      </view>

    </form>

  </view>

</view>



使用内置behaviors

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

wx://form-field

wx://form-field-group

wx://form-field-button

wx://form-field

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


代码示例:

// custom-form-field.js

Component({

behaviors: ['wx://form-field'],

data: {

  value: ''

},

methods: {

  onChange: function (e) {

    this.setData({

      value: e.detail.value,

    })

  }

}

})


wx://form-field-group

从基础库版本 2.10.2 开始提供支持。

使 form 组件可以识别到这个自定义组件内部的所有表单控件。 例如,页面的结构如下:

<form bindsubmit="submit">

  <custom-comp></custom-comp>

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

</form>

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

<input name="name" />

<switch name="student" />

如果组件 custom-comp 配置有:

Component({

behaviors: ['wx://form-field-group']

})

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


wx://form-field-button

从基础库版本 2.10.3 开始提供支持。

代码示例: 在开发者工具中预览效果

使 form 组件可以识别到这个自定义组件内部的 button , 如果自定义组件内部有设置了 form-type 的 button ,它将被组件外的 form 接受。 例如,页面的结构如下:

<form bindsubmit="submit">

  <input name="name" placeholder="请输入名字"></input>

  <custom-comp></custom-comp>

</form>

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

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

如果组件 custom-comp 配置有:

Component({

behaviors: ['wx://form-field-button']

})

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


版权声明:本站所有内容均由互联网收集整理、上传,如涉及版权问题,请联系我们第一时间处理。

原文链接地址:https://developers.weixin.qq.com/miniprogram/dev/component/form.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容