Form 表单

使用指南

在 page.json 中引入组件

"usingComponents": {
  "w-cell": "/dist/w-cell/index",
  "w-cell-group": "/dist/w-cell-group/index",
  "w-input": "/dist/w-input/index",
  "w-checkbox": "/dist/w-checkbox/index",
  "w-button": "/dist/w-button/index",
  "w-form": "/dist/w-form/index",
  "w-switch": "/dist/w-switch/index",
  "w-radio": "/dist/w-radio/index",
  "w-date-picker": "/dist/w-date-picker/index",
  "w-address-picker": "/dist/w-address-picker/index",
  "w-cell-picker": "/dist/w-cell-picker/index",
  "w-number": "/dist/w-number/index",
  "w-vcode": "/dist/w-vcode/index",
  "w-validate": "/dist/w-validate/index",
  "w-pane": "/dist/w-pane/index"
}

视频演示

表单域

只要表单组件包裹在 w-form 表单里,表单域可以是输入控件,标准表单域,标签,下拉菜单,文本域等。

<w-form
  bind:onSubmit="通过onSubmit事件采集form表单域中的表单数据"
  bind:onReset="重置表单域中的所有数据"
>
  里面可以放各种表单组件
  需要收集的表单组件一定要加name属性,不然form不会收集没有name字段的数据
  <w-input name="input" />
  <w-checkbox name="input"/>
  表单按钮可以指定属性[form-type]来触发w-form表单的submit事件进行采集数据
  <w-button formType="submit"/>
  <w-button formType="reset"/>

  w-validate是表单的校验组件,在需要校验组件的外边加上w-validate组件可以对该组件进行校验,
  w-validate内置了常用的校验规则,用户也可自定义规则
  <w-validate rules="{{{ required: { value: true, message: '必填'}}}">
    <w-input name="validateInput" />
  </w-validate>
  <w-switch />
  <w-radio />
</w-form>

代码演示

<w-form
 bind:onSubmit="wussFormSubmit"
 bind:onReset="wussFormReset"
 isValidateBtn
>
	<w-cell-group>
		<w-validate rules="{{ userNameRules }}">
			<w-input
			 name="userName"
			 placeholder="请输入你的姓名"
			 clear
			 label="姓名"
			/>
		</w-validate>

		<w-validate rules="{{ { mode:['mobile'] } }}">
			<w-input
			 type="mobile"
			 name="mobile"
			 clear
			 placeholder="请输入你的手机号"
			 label="手机号"
			/>
		</w-validate>

		<w-validate firstValidate rules="{{ isRequired }}">
			<w-cell-picker
			 label="性别"
			 title="请选择性别"
			 placeholder="请选择性别"
			 options="{{ [['男','女']] }}"
			 name="sex"
			 bind:onOpen="handlePickerOpen"
			 bind:onCancel="handlePickerCancel"
			/>
		</w-validate>

		<w-validate firstValidate rules="{{ isRequired }}">
			<w-address-picker
			 label="选择地区"
			 name="region"
			/>
		</w-validate>

		<view
		 hidden="{{ textarea_visible }}"
		 class=""
		 hover-class="none"
		 hover-stop-propagation="false"
		>
			<w-validate rules="{{ isRequired }}">
				<w-input
				 clear
				 type="textarea"
				 label="地址"
				 name="address"
				 placeholder="请输入详细地址..."
				/>
			</w-validate>
		</view>

		<w-cell label="同意用户协议信息">
			<w-switch
			 name="isVip"
			 slot="content"
			/>
		</w-cell>

		<w-validate firstValidate rules="{{ isRequired }}">
			<w-date-picker
			 name="createTime"
			 mode="dateTime"
			 label="出生日期"
			 title="请选择日期"
			/>
		</w-validate>

		<w-radio
		 label="请选择手机"
		 name="radio"
		 defaultValue="huawei"
		 options="{{ options1 }}"
		/>

		<w-checkbox
		 name="checkbox"
		 options="{{ items1 }}"
		/>

		<w-cell>
			<w-button
			 inline
			 type="info"
			 formType="submit"
			>
				提交
			</w-button>
			<w-button
			 inline
			 type="warn"
			 formType="reset"
			>
				重置
			</w-button>
		</w-cell>
	</w-cell-group>
</w-form>
data: {
  userNameRules: {
    maxLength: {
      value: 6,
      message: '姓名最多6个字',
    },
    minLength: {
      value: 3,
      message: '姓名最少三个字',
    },
  },
  isRequired: {
    required: {
      value: true,
      message: '必填',
    },
  },
  options1: [
    {
      key: '苹果',
      value: 'iphone',
    },
    {
      key: '华为',
      value: 'huawei',
    },
    {
      key: 'oppo音乐手机',
      value: 'oppo',
    },
  ],
  items1: [
    {
      text: '复选框1',
      ...MOCK_DATA,
      checked: true,
    },
    {
      text: '复选框2',
      ...MOCK_DATA,
      checked: true,
      disabled: true,
    },
    {
      text: '复选框3',
      ...MOCK_DATA,
    },
  ],
  textarea_visible: true,
},
handlePickerOpen() {
  this.setData({ textarea_visible: true })
},
handlePickerCancel() {
  this.setData({ textarea_visible: false })
},
wussFormSubmit(e) {
  console.log('提交了:', e.detail);
},
wussFormReset(e) {
  console.log('重置了:', e.detail);
},

API Form

Attribute 属性

属性 说明 类型 默认值
isValidateBtn 设置提交按钮跟随验证 disabled boolean false

Event 事件

事件名 说明 参数
submit 表单提交事件 e.detail
reset 表单重置事件 e.detail

Slot 插槽

名称 说明
slot 表单组件

Class 自定义类名

类名 说明
wuss-class 根节点样式类

w-validate 表单域校验组件

用于表单组件的数据校验,内置了常用规则。 用户也可自定义规则进行校验。

Attribute 属性
属性 说明 类型 示例
rules 校验规则对象 object { required: { value: true, message: '必填' } }
rules.required.value 校验规则的值 any -
rules.required.message 当前校验不通过时的错误提示 String -
firstValidate 是否需要初始化校验 boolean false
rules 常用校验规则
参数 说明 类型 默认值
mode 常用校验模式有 [mobile / email / url / idcard] Array -
required 是否必填 Boolean -
equalLength 等于字符长度 Number -
maxLength 最大字符长度 Number -
minLength 最小字符长度 Number -
rangelength 限制字符长度的范围 Array -
equal 等于某值 Number -
max 最大值 Number -
min 最小值 Number -
range 值的范围 Number -
regexp 自定义校验规则正则 Regexp -

使用方法

<w-form>
  使用mode 为mobile时,为校验手机号码
  <w-validate rules="{{{mode: ['mobile']}}}"> ... </w-validate>

  required 必填
  <w-validate rules="{{{required: true}}}"> ... </w-validate>

  regexp 自定义校验规则
  <w-validate rules="{{{regexp:['1','g']}}}"> ... </w-validate>
</w-form>