wx-form-validate

1.0.1 • Public • Published

初衷:一直以来,表单校验就是一个常用的功能,但是我做了几个月的小程序,却没找到让我心满意足的表单校验组件,因此决定自己撸一个出来。

下载地址:wx-formValidate

基础用法:

引入form和field组件,同时要保持与instance.js同级目录。(注意:由于小程序的诸多限制,如果需要修改相关的css样式和布局,可以进入到组件的wxml和wxss修改。)


用法

Form

props

参数 说明对象 类型 默认值
model 表单数据对象 object
rules 表单验证规则 object

事件

事件名称 说明 回调参数
bind:validate 任一表单项被校验后触发 e.detail:被校验的表单项 prop 值,校验是否通过,错误消息
bind:submit 数据验证成功后回调事件 -

方法

方法名 说明 参数
validate 对整个表单进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段信息。 Function(callback: Function(boolean, array))
validateField 对部分表单字段进行校验的方法,返回每个字段是否校验成功状态和相应字段及信息 Function(props: array | string, callback: Function(errorMessage: object
resetFields 对整个表单进行重置,将所有字段值重置为初始值并移除校验结果 -
clearValidate 移除表单项的校验结果。传入待移除的表单项的 prop 属性或者 prop 组成的数组。 Function(props: array | string)

注意;使用this.selectComponent('#form')获取form组件实例后,就可以调用这些方法。('#form'为form组件绑定的id)

<form model="{{model}}" rules="{{rules}}" id="form">
...
</form>
    this.setData({
      form: this.selectComponent('#form')
    })
    ////
    this.data.form.resetFields()

Field

默认是个输入框组件,可以使用custom开启slot,插入自定义表单组件。

props

参数 说明 类型 默认值
prop 表单域 model对应的 字段 string -
value 表单域的值 不限 -
label label文本 string -
placeholder 文本占位符 string '请输入'
placeholderStyle 文本占位符自定义样式 string -
custom 是否插入自定义表单组件 boolean false
autoChecked 对于其它非input组件,对值进行自动校验 boolean true

事件

事件名 说明 回调参数
bind:change input输入框值改变时触发 e.detail:{prop:字段名,value:变化后的值}
bind:blur input离开焦点后触发 -

校验规则

本插件为了简化,基本没有内置校验规则,都要开发者手动设置,规则在rules中配置。

示例如下:

    rules: {
      name: [{
        validator: (value, callback) => {
          if (!value) {
            callback(new Error('请输入姓名'))
          }
        },
        trigger:'blur'
      }],
      phone: [{
        validator: (value, callback) => {
          if (!value) {
            callback(new Error('请输入手机号'))
          }
        }
      }],
      checked: [{
        validator: (value, callback) => {
          if (!value) {
            callback('请打开开关')
          }
        }
      }]
    }

每个字段可以配置多个规则,每个规则对象有validator和trigger属性,validator为规则函数,第一个参数是字段值,第二个是抛出相应错误信息的函数,参数为string或error实例(一旦捕捉到错误信息,同一字段的后面规则便不再执行)。trigger为触发条件,可以为字符串或者数组,值为blur' | 'change' | ['change', 'blur'],默认为['change', 'blur']。基本是input组件使用trigger这个属性。其它非input组件可以使用autoChecked进行自动实时校验,类似‘change’。或者使用form中validateField方法在相关事件函数中手动校验。

template模板代码

<form model="{{model}}" rules="{{rules}}" id="form">
  <field prop="name" value="{{model.name}}" placeholder="请输入姓名" label="姓名" bind:change="onChange" />
  <field prop="phone" value="{{model.phone}}" placeholder="请输入手机号" label="手机" bind:change="onChange" />
  <field custom prop="checked" value="{{model.checked }}" label="开关">
    <van-switch checked="{{ model.checked }}" bind:change="onChangec" />
  </field>
</form>
model:{
      name: '',
      phone: '',
      checked: true
  },
  /////
 onChange(e) {
    const {
      prop,
      value
    } = e.detail
    this.data.model[prop] = value
    this.setData({
      model: this.data.model
    })
  },
  onChangec({
    detail
  }) {
    this.data.model['checked'] = detail
    this.setData({
      model: this.data.model
    })
  },

Package Sidebar

Install

npm i wx-form-validate

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

15.4 kB

Total Files

11

Last publish

Collaborators

  • zhouxni