vant Weapp版本没有自带表单校验

自己实现一个简单的rules-form工具类 在utils文件下创建rules-form.js

// 表单校验
/**
 * 规则
 * rules: {
 *  name: [
 *    {
        required: true,
        message: '请输入姓名'
      }
    ],
    mobile: [
      {
        required: true,
        message: '请输入手机'
      },
      {
        pattern: /^1[3-9]\d{9}$/,
        message: '手机号格式错误'
      }
    ]
 * }
 * rules是一个对象  key对应的表单字段, key是一个数组类型,一个输入框可判断多个条件  required判断是否为空,pattern正则判断
 * 注意: rules对象不能放在 页面的data对象中,否则会获取不到正则 请在Page({})外面定义常量
 */
export default function formRules(rules, form, callback) {
  for (let key in rules) {
    const value =
      typeof form[key] == 'number' ? form[key].toString() : form[key]
    const rs = rules[key]
    for (let i = 0; i < rs.length; i++) {
        if (rs[i].required) {
            if (typeof value === 'boolean' && value === false) {
              wx.showToast({
              title: rs[i].message,
              icon: 'none'
            })
              callback(false)
              return
            } else if (typeof value === 'string' && value.trim() == '') {
              wx.showToast({
              title: rs[i].message,
              icon: 'none'
            })
              callback(false)
              return
            }
         } else if (rs[i].pattern && !rs[i].pattern.test(value)) {
            wx.showToast({
              title: rs[i].message,
              icon: 'none'
            })        
            callback(false)
            return
         }
     }
  }
  callback(true)
}

调用方式

例子:

rules = {
  thumb: [{
    required: true,
    message: '请上传头像'
  }],
  name: [{
    required: true,
    message: '请输入姓名'
  }],
  mobile: [{
      required: true,
      message: '请输入手机'
    },
    {
      pattern: /^1[3-9]\d{9}$/,
      message: '手机号格式错误'
    }
  ],
  wxnum: [{
    required: true,
    message: '请输入微信号'
  }],
  email: [{
      required: true,
      message: '请输入邮箱'
    },
    {
      pattern: /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/,
      message: '邮箱格式错误'
    }
  ]
Page({
    data:{
        form: {
          thumb: '',
          name: '',
          mobile: '',
          wxnum: '',
          email: '',
          address: '',
          storename: ''
        },
    }

  // 表单提交
  handleFormSubmit() {
    const { form } = this.data
    formRules(rules, form, (status) => {
      if(status) {
        console.log('校验通过')
      }
    })
  },
})

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
抱歉,我的回答有误。vant weapp 确实没有 `<van-form>` 组件。在 vant weapp 中,你可以使用 `<van-cell-group>` 和 `<van-field>` 组件来构建表单,并通过事件监听来处理表单提交。 下面是一个示例代码,演示如何使用 vant weapp 构建表单并提交数据: ```html <van-cell-group> <van-field name="username" label="用户名" placeholder="请输入用户名" bind:input="onUsernameChange" ></van-field> <van-field name="password" label="密码" placeholder="请输入密码" type="password" bind:input="onPasswordChange" ></van-field> </van-cell-group> <van-button type="primary" bind:tap="submitForm">提交</van-button> ``` ```javascript Page({ data: { username: '', password: '' }, onUsernameChange(event) { this.setData({ username: event.detail.value }); }, onPasswordChange(event) { this.setData({ password: event.detail.value }); }, submitForm() { // 获取表单数据 const { username, password } = this.data; // 在这里可以进行表单验证等操作 if (!username || !password) { // 表单验证不通过 return; } // 表单验证通过,可以将数据提交到后端进行处理 // ... } }); ``` 在这个示例中,我们使用 `<van-cell-group>` 和 `<van-field>` 组件构建了一个简单的表单。通过绑定 `bind:input` 事件监听输入框的变化,将输入的值存储在 `data` 中的对应属性中。然后,在点击提交按钮时,调用 `submitForm` 方法来获取表单数据并进行相应的处理。 希望这次的回答能够帮到你!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值