【微信小程序-原生开发】实用教程19 - 表单范例 VS 表单校验(含必填校验函数封装,实时数字校验)

简介: 【微信小程序-原生开发】实用教程19 - 表单范例 VS 表单校验(含必填校验函数封装,实时数字校验)

表单开发中,最常见的即必填校验和数字校验

必填校验

当字段较多时,为了优化代码,将必填校验进行封装

必填校验函数封装 utils\form.js

export function formRequiredValid(formRule, formData) {
  let result = true
  let obj = formRule

  obj[Symbol.iterator] = function* () {
    let keys = Object.keys(obj);
    for (let k of keys) {
      yield [k, obj[k]];
    }
  };

  for (let [k, v] of obj) {
    if (!formData[k]) {
      wx.showToast({
        icon: 'none',
        title: `${v}不能为空`,
      })
      result = false
      break
    }
  }
  return result
}

使用范例

import {
  formRequiredValid
} from '../../../../utils/form.js'
 
  save: function () {
    let formRule = {
      title: "标题",
      date: "日期",
      time: "时间",
      placeInfo: "地点",
    }

    if (!formRequiredValid(formRule, this.data.formData)) {
      return
    }
    //  此处省略数据库的保存逻辑
 }

实时数字校验

数字类数据,需实时进行数据类型校验,如

<t-input clearable bindclear="inputChange" bindchange="inputChange" data-prop='maxNum' value="{{formData.maxNum}}" type="number" label="人数:" placeholder="请输入最大报名人数" suffix="人" align="right" t-class-tips="tips" tips="{{formError.maxNum ? '请输入数字' : ''}}" />

<t-input clearable bindclear="inputChange" bindchange="inputChange" data-prop='cost' value="{{formData.cost}}" type="number" label="费用:" placeholder="请输入人均费用" suffix="元/人" align="right" t-class-tips="tips" tips="{{formError.cost ? '请输入数字' : ''}}" />
    // 表单校验报错
    formError: {},
  inputChange: function (e) {
    let prop = e.currentTarget.dataset.prop
    let value = e.detail.value || '' //清空表单时,触发更新,避免清空时修改无效
    this.data.formData[prop] = value
    if (prop === 'date') {
      this.data.formData.week = getWeek(value)
    }
    // 对特殊字段进行正则校验
    if (prop === 'cost' || prop === 'maxNum') {
      const isNumber = value ? /^\d+(\.\d+)?$/.test(value) : true;
      this.data.formError[prop] = !isNumber
      this.setData({
        formError: this.data.formError
      });
      if (value && isNumber) {
        // 将数据格式化为数字
        this.data.formData[prop] = Number(value)
      }
    }
    this.setData({
      formData: this.data.formData
    })
  },
// 保存时, 校验是否通过数据校验
    if (Object.values(this.data.formError).includes(true)) {
      wx.showToast({
        icon: 'error',
        title: '未通过数据校验',
      })
      return
    }

其他实时校验

参考实时数字校验,修改对应的正则表达式即可,如邮箱校验,手机号校验等。

目录
相关文章
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
4169 7
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
2512 7
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
4783 1
ly~
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
483 6
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
3879 11
技术小白如何利用DeepSeek半小时开发微信小程序?
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
19541 14
|
小程序 关系型数据库 Java
weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
|
JSON 缓存 小程序
微信小程序组件封装与复用:提升开发效率
本文深入探讨了微信小程序的组件封装与复用,涵盖组件的意义、创建步骤、属性与事件处理,并通过自定义弹窗组件的案例详细说明。组件封装能提高代码复用性、开发效率和可维护性,确保UI一致性。掌握这些技能有助于构建更高质量的小程序。
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【10月更文挑战第3天】随着移动互联网的发展,微信小程序凭借便捷的用户体验和强大的社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的身份认证与授权机制,包括手机号码验证、微信登录、第三方登录及角色权限控制等方法,并强调了安全性、用户体验和合规性的重要性,帮助开发者更好地理解和应用这一关键技术。
578 5