微信小程序动态生成表单来啦!你再也不需要手写表单了!

这篇具有很好参考价值的文章主要介绍了微信小程序动态生成表单来啦!你再也不需要手写表单了!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

dc-vant-form

由于我们在小程序上涉及到数据采集业务,需要经常使用表单,微信小程序的表单使用起来非常麻烦,数据和表单是分离的,每个输入框都需要做数据处理才能实现响应式数据,所以我开发了dc-vant-form,针对原生微信小程序+vant组件构建的自定义表单,开发者可以通过表单配置项来快速生成表单。

1、🚩解决微信小程序表单双向绑定问题

2、👍解决微信小程序下拉弹框值与表单绑定问题

3、✨配置项自动生成表单

4、🎉表单详情通过配置项控制详情回显

5、🚀操作表单单项数据修改

6、🔥提供9种输入组件覆盖表单的大部分业务场景

说明

1、在使用前需要保证项目中安装了vant

2、在使用表单之前,你需要准备表单渲染的数据,以及当前用作回显的详情数据。

3、该表单提供了9种输入组件,分别为:文本、小数、整数、级联选择器、文本域、数字间隔输入器、标准时间选择器、年月日时间选择器、年月时间选择器。

4、初始化时配置参数必传,表单可传可不传,若只传配置参数,我们会根据配置参数自动生成表单。

5、表单提供编辑回显、单条数据传入回显。

6、通过getInit函数初始化表单,通过submit函数获取表单结果。


开始

npm i dc-vant-form

自定义表单示例:

初始化

在初始化前,需要先定义初始化配置,配置项如下:

key 说明
label 表单label
module 表单绑定的数据key
type 表单组件类型,值对应:1文本、2小数、3整数、4级联选择器、5文本域、6时间选择器、7数字间隔输入器
isRequired 是否星号校验,值对应:true、false
options 表单下拉菜单项,值对应数组对象:[{label: ‘红色’,value: ‘red’}]
dateType 时间选择器类型,默认标准时间选择器,值对应:datetime标准时间、date年月日、year-month年月

注意点

类型 说明
type: 4 必须配置options项,你可以给它默认值空数组[]
type: 6 必须配置dateType项,你可以选择三种对应值:datetime、date、year-month
type: 7 必须配置 beginModule、endModule,分别对应左侧、右侧输入框;type为7不需要配置module项

下面是示例:

"usingComponents": {
    "dc-vant-form": "/miniprogram_npm/dc-vant-form/dc-vant-form/index"
  }

页面:

<dc-vant-form id="dc-vant-form" />

配置项:

config: [
      {
        label: '详细地址',
        module: 'address',
        type: 1, 
        isRequired: true
      },
      {
        label: '商品类型',
        module: 'goodsType',
        type: 4,
        isRequired: true,
        options: [
          {
            id: 1,
            label: '电子产品',
            value: 101
          },
          {
            id: 2,
            label: '儿童玩具',
            value: 102
          },
          {
            id: 3,
            label: '服装饰品',
            value: 103
          }
        ]
      },
      {
        label: '商品颜色',
        module: 'goodsColor',
        type: 4,
        isRequired: true,
        options: [
          {
            id: 1,
            label: '红色',
            value: 'red'
          },
          {
            id: 2,
            label: '青色',
            value: 'cyan'
          },
          {
            id: 3,
            label: '绿色',
            value: 'green'
          }
        ]
      },
      {
        label: '包装体积',
        module: 'packingVolume',
        type: 2,
        isRequired: false
      },
      {
        label: '商品重量',
        module: 'goodsWeight',
        type: 2,
        isRequired: true
      },
      {
        label: '商品结构',
        module: 'goodsStructure',
        type: 4,
        isRequired: true,
        options: [
          {
            id: 1,
            label: '成品',
            value: 2230
          },
          {
            id: 2,
            label: '组装',
            value: 2231
          }
        ]
      },
      {
        label: '商品数量',
        module: 'goodsNumber',
        type: 3,
        isRequired: false
      },
      {
        label: '可购范围',
        beginModule: 'beginLimit',
        endModule: 'endLimit',
        type: 7,
        isRequired: false
      },
      {
        label: '联系人',
        module: 'contact',
        type: 1,
        isRequired: false
      },
      {
        label: '创建时间',
        module: 'createDate',
        type: 6,
        dateType: 'date',
        isRequired: true
      },
      {
        label: '标准时间',
        module: 'createDate2',
        type: 6,
        dateType: 'datetime',
        isRequired: true
      },
      {
        label: '选区年月',
        module: 'createDate3',
        type: 6,
        dateType: 'year-month',
        isRequired: true
      },
      {
        label: '备注',
        module: 'remark',
        type: 5,
        isRequired: false
      }
    ]

我们将上面的配置项传入init函数初始化表单

  // 数据初始化
  init() {
    let dom = this.selectComponent("#dc-vant-form");
    dom.getInit(this.data.config)
  },
      
  onLoad(options) {
    this.init();
  },

小程序动态表单值,原生微信小程序,微信小程序,小程序,前端,vue.js,react.js,javascript,html5


获取表单数据

我们通过submit函数获取表单数据

  // 提交
  sure() {
    let dom = this.selectComponent("#dc-vant-form");
    console.log(dom.submit());
  }

小程序动态表单值,原生微信小程序,微信小程序,小程序,前端,vue.js,react.js,javascript,html5

小程序动态表单值,原生微信小程序,微信小程序,小程序,前端,vue.js,react.js,javascript,html5


表单回显

在初始化时,可以传入表单详情,我们会根据配置项回显表单数据。

// 表单详情数据
form: {
  address: '浙江省杭州市',
  goodsType: 101,
  goodsColor: 'red',
  packingVolume: 10,
  goodsWeight: 5,
  goodsStructure: 2230,
  goodsNumber: 100,
  beginLimit: 1,
  endLimit: 10,
  contact: 'DCodes',
  createDate: '2023-01-01',
  createDate2: '2023-01-01 20:00:00',
  createDate3: '2023-01',
  remark: '这是一个动态的文本域'
}
init() {
  let { config,form } = this.data;
  let dom = this.selectComponent("#dc-vant-form");
  dom.getInit(config, form)
},

onLoad(options) {
  this.init();
},

小程序动态表单值,原生微信小程序,微信小程序,小程序,前端,vue.js,react.js,javascript,html5


单项数据修改

我们提供onAccept函数,用于接收指定表单项的修改

onAccept接收三个参数,依次为:value、key、place

参数 说明
value 更改的值
key 表单中对应的key
place 如果是数字间隔修改器,需要传入place,分为两个固定参数:left、right,表示需要修改间隔输入框的左侧和右侧

小程序动态表单值,原生微信小程序,微信小程序,小程序,前端,vue.js,react.js,javascript,html5

// 修改某项
update() {
    let dom = this.selectComponent("#dc-vant-form");
    // 普通类型
    // dom.onAccept('浙江省杭州市', 'address')
    
    // 级联选择器-value为options中的key
    // dom.onAccept(103, 'goodsType')
    
    // 数字间隔输入器
    // dom.onAccept(1, 'beginLimit', 'left')
    // dom.onAccept(3, 'endLimit', 'right')
 }

如果觉得该组件不错,欢迎点赞👍、收藏💖、转发✨哦~

阅读其它:

微信小程序用户隐私API(👈点击直达)

前端换肤,聊一聊主题切换那些事(👈点击直达)

Shapes布局-文字环绕动画(👈点击直达)

css绘制一个Pinia小菠萝(👈点击直达)

深入理解Promise(👈点击直达)文章来源地址https://www.toymoban.com/news/detail-798487.html

到了这里,关于微信小程序动态生成表单来啦!你再也不需要手写表单了!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 微信小程序 动态生成海报分享朋友圈,需先保存图片

    直接拷贝代码,不使用插件,自己纯代码实现。 从相册 或拍照 选择一个图片做海报背景。 大吉大利 今晚吃鸡。

    2024年02月11日
    浏览(59)
  • 微信小程序根据权限动态生成对应权限的tab-bar

    关于配置自定义tab-bar的方法可以参考微信官方文档 如题:最近公司在做微信小程序,遇到了不同权限用户有不同权限的需求,简单的自定义tab-bar已无法满足需要了。自己在网上搜了很多关于动态渲染对应tab-bar的案例,有的可以实现显示对应权限tab-bar,但是切换点击就会有

    2024年02月09日
    浏览(30)
  • vue页面动态生成二维码,扫描二维码跳转到微信小程序,同时传递参数

    最近领导提了个新的需求, 点击表格时,弹出一个二维码,微信扫描此二维码时,跳转到微信小程序,同时将所在行的id(即员工所在公司的id)传过去,这样员工在登录微信小程序时,根据此id就知道是哪个公司的员工登录或者注册 了! 刚开始想的是,直接把小程序的二维

    2024年02月11日
    浏览(44)
  • 微信小程序使用weapp-qrcode.js生成二维码以及“扫普通链接二维码打开小程序”动态传递参数实现记录

    参考文章原文链接:微信小程序使用weapp-qrcode.js完成二维码的生成_fairy_404的博客-CSDN博客 首先给需要生成二维码的页面创建一个canvas 因为我这里实现的是弹窗展示二维码,所有就把 canvas移出页面,小伙伴们根据自己需求进行调整,weapp-qrcode.js内容参考链接中就有,我这里就

    2024年02月15日
    浏览(39)
  • 【微信小程序】表单校验

    小程序开发过程中,很多地方要做表单校验,而小程序并不能像vue那样有专门的校验函数,只能自己手写做出类似的效果。 以修改密码为例,需要校验以下三个输入框: 原理: 利用输入框的 bindblur 方法,根据校验的条件判断来控制错误信息的显示隐藏 实现代码:

    2024年02月13日
    浏览(32)
  • 微信小程序常用表单组件

       button 为按钮组件,是常用的表单组件之一,用于事件的触发以及表单的提交。其属性表如下所示。 代码示例:    checkbox 为复选框组件,常用于在表单中进行多项数据的选择。复选框的 checkbox-group 为父控件,其内部嵌套若干个 checkbox 子控件。    checkbox-group 属性如

    2024年02月09日
    浏览(31)
  • 微信小程序表单验证方式

    因微信小程序上没有自带表单验证,为了实现和vue的组件库类似于的表单验证,这个时候我们就需要借鉴一个文件WxValidate表单验证的js插件,以下只是做个列子,需要更多验证请往官网文档查看 插件下载地址及官方文档:https://github.com/skyvow/wx-extend 具体的WxValidate.js文件的位置在

    2024年02月09日
    浏览(30)
  • 微信小程序使用weapp-qrcode.js生成二维码以及“扫普通链接二维码打开小程序”动态传递参数实现以及遇到问题记录

    参考文章原文链接:微信小程序使用weapp-qrcode.js完成二维码的生成_fairy_404的博客-CSDN博客 首先给需要生成二维码的页面创建一个canvas 因为我这里实现的是弹窗展示二维码,所有就把 canvas移出页面,小伙伴们根据自己需求进行调整,weapp-qrcode.js内容参考链接中就有,我这里就

    2024年02月01日
    浏览(43)
  • 微信小程序-表单提交和校验

    一、使用vant组件生成如下页面 二、前端代码如下 三、对于每一个van-field 组件都有自己的绑定函数 当输入信息后则会把数据实时绑定到js中的data中 bind:change=“onChangeTitle” // 改变时 bind:blur=“onChangePrice” // 焦点变化时 四、如果需要校验,也可以在onChangeTitle,或者最后提交

    2024年02月21日
    浏览(30)
  • 微信小程序(十)表单组件(入门)

    注释很详细,直接上代码 上一篇 新增内容: 1. type 属性指定表单类型 2. placeholder 属性指定输入框为空时的占位文字 源码: form.wxml form.wxss 效果演示: 1.不同的 type 属性所决定的输入法键盘 密码类型 因为会屏蔽投屏软件所以 屏幕会黑 ,在实际手机里面显示的是常见的 密码

    2024年01月25日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包