wlyyui 文档 wlyyui 文档
首页
  • 介绍
  • 快速上手
  • 自定义主题
  • 基础组件

    • Color 色彩
    • Text 文本
    • Icon 图标
    • Button 按钮
    • Animation 动画
  • 布局组件

    • GridLayout 栅格布局
    • Grid 宫格
    • Panel 面板
    • Preview 表单预览
    • List 列表
    • Card 卡片
  • 表单组件

    • Calendar 日历
    • Cascader 级联选择器
    • Picker 选择器
    • DatePicker 日期时间选择器
    • Slider 滑块选择器
    • Form 表单校验
    • FormItem 表单项
    • Select 选择器
    • Input 输入框
    • InputNumber 数字输入框
    • Label 标签
    • Radio 单选框
    • Checkbox 复选框
    • Switch 开关
    • Textarea 多行输入框
    • Rate 评分
    • Upload 图片上传
    • UploadVideo 视频上传
    • SearchBar 搜索栏
  • 反馈类型组件

    • ActionSheet 上拉菜单
    • Toast 轻提示
    • Backdrop 遮罩层
    • Dialog 对话框
    • DropdownMenu 下拉菜单
    • Modal 模态框
    • Gallery 画廊
    • Landscape 压屏窗
    • LoadAni 加载动画
    • Spin 旋转动画
    • Message 消息提示
  • 导航类型组件

    • NavBar 导航栏
    • BubbleBox 气泡框
    • Seg_tab 分段器
    • Tabbar 标签栏
    • BottomNavbar 底部导航栏
    • Tabs 标签页
    • IndexList 索引列表
    • NoticeBar 通告栏
    • Sticky 吸顶容器
    • Steps 步骤条
    • Fab 浮动按钮
    • Drawer 抽屉
    • BottomPopup 底部弹出层
    • TopPopup 顶部弹出层
    • TimeAxis 时间轴
    • SideMenu 纵向选项卡
  • 展示组件

    • Badge 徽章
    • Alert 警告框
    • Avatar 头像
    • Tag 标签
    • Tag 标签
    • Progress 进度条
    • Circle 圆形进度条
    • CountDown 倒计时
    • Divider 分割线
    • LoadMore 加载更多
    • Empty 缺省页
    • Skeleton 骨架屏
    • Parse 富文本
  • 拓展组件

    • ShareSheet 分享面板
    • Result 结果页
    • FilterBar 筛选栏
    • SingleInput 单输入框
    • DigitalRoller 数字滚轮
    • DigitalKeyboard 数字键盘
    • LicensePlate 车牌号键盘
    • SwiperDot 轮播图指示点
    • CopyText 长按复制
    • CubicBezier 贝塞尔曲线
    • ImageCropper 图片裁剪
    • Drag 拖拽排序
    • RotateVerify 旋转验证码
    • SliderCaptcha 滑块拼图验证
资源
案例
GitHub (opens new window)
首页
  • 介绍
  • 快速上手
  • 自定义主题
  • 基础组件

    • Color 色彩
    • Text 文本
    • Icon 图标
    • Button 按钮
    • Animation 动画
  • 布局组件

    • GridLayout 栅格布局
    • Grid 宫格
    • Panel 面板
    • Preview 表单预览
    • List 列表
    • Card 卡片
  • 表单组件

    • Calendar 日历
    • Cascader 级联选择器
    • Picker 选择器
    • DatePicker 日期时间选择器
    • Slider 滑块选择器
    • Form 表单校验
    • FormItem 表单项
    • Select 选择器
    • Input 输入框
    • InputNumber 数字输入框
    • Label 标签
    • Radio 单选框
    • Checkbox 复选框
    • Switch 开关
    • Textarea 多行输入框
    • Rate 评分
    • Upload 图片上传
    • UploadVideo 视频上传
    • SearchBar 搜索栏
  • 反馈类型组件

    • ActionSheet 上拉菜单
    • Toast 轻提示
    • Backdrop 遮罩层
    • Dialog 对话框
    • DropdownMenu 下拉菜单
    • Modal 模态框
    • Gallery 画廊
    • Landscape 压屏窗
    • LoadAni 加载动画
    • Spin 旋转动画
    • Message 消息提示
  • 导航类型组件

    • NavBar 导航栏
    • BubbleBox 气泡框
    • Seg_tab 分段器
    • Tabbar 标签栏
    • BottomNavbar 底部导航栏
    • Tabs 标签页
    • IndexList 索引列表
    • NoticeBar 通告栏
    • Sticky 吸顶容器
    • Steps 步骤条
    • Fab 浮动按钮
    • Drawer 抽屉
    • BottomPopup 底部弹出层
    • TopPopup 顶部弹出层
    • TimeAxis 时间轴
    • SideMenu 纵向选项卡
  • 展示组件

    • Badge 徽章
    • Alert 警告框
    • Avatar 头像
    • Tag 标签
    • Tag 标签
    • Progress 进度条
    • Circle 圆形进度条
    • CountDown 倒计时
    • Divider 分割线
    • LoadMore 加载更多
    • Empty 缺省页
    • Skeleton 骨架屏
    • Parse 富文本
  • 拓展组件

    • ShareSheet 分享面板
    • Result 结果页
    • FilterBar 筛选栏
    • SingleInput 单输入框
    • DigitalRoller 数字滚轮
    • DigitalKeyboard 数字键盘
    • LicensePlate 车牌号键盘
    • SwiperDot 轮播图指示点
    • CopyText 长按复制
    • CubicBezier 贝塞尔曲线
    • ImageCropper 图片裁剪
    • Drag 拖拽排序
    • RotateVerify 旋转验证码
    • SliderCaptcha 滑块拼图验证
资源
案例
GitHub (opens new window)
  • 基础组件

    • Color 色彩
    • Text 文本
    • Icon 图标
    • Button 按钮
    • Animation 动画
  • 布局组件

    • GridLayout 栅格布局
    • Grid 宫格
    • Panel 面板
    • Preview 表单预览
    • List 列表
    • Card 卡片
  • 表单组件

    • Calendar 日历
    • Cascader 级联选择器
    • Picker 选择器
    • DatePicker 日期时间选择器
    • Slider 滑块选择器
    • Form 表单校验
      • FormItem 表单项
      • Select 选择器
      • Input 输入框
      • InputNumber 数字输入框
      • Label 标签
      • Radio 单选框
      • Checkbox 复选框
      • Switch 开关
      • Textarea 多行输入框
      • Rate 评分
      • Upload 图片上传
      • UploadVideo 视频上传
      • SearchBar 搜索栏
    • 反馈类型组件

      • ActionSheet 上拉菜单
      • Toast 轻提示
      • Backdrop 遮罩层
      • Dialog 对话框
      • DropdownMenu 下拉菜单
      • Modal 模态框
      • Gallery 画廊
      • Landscape 压屏窗
      • Loading 加载
      • LoadAni 加载动画
      • Spin 旋转动画
      • Message 消息提示
      • SwipeAction 滑动菜单
    • 导航类型组件

      • NavBar 导航栏
      • BubbleBox 气泡框
      • Seg_tab 分段器
      • Tabbar 标签栏
      • BottomNavbar 底部导航栏
      • Tabs 标签页
      • IndexList 索引列表
      • NoticeBar 通告栏
      • Sticky 吸顶容器
      • Steps 步骤条
      • Fab 浮动按钮
      • Drawer 抽屉
      • BottomPopup 底部弹出层
      • TopPopup 顶部弹出层
      • TimeAxis 时间轴
      • SideMenu 纵向选项卡
    • 展示组件

      • Badge 徽章
      • Alert 警告框
      • Avatar 头像
      • Tag 标签
      • DataTag 标签选择
      • Progress 进度条
      • Collapse 折叠面板
      • Circle 圆形进度条
      • CountDown 倒计时
      • Divider 分割线
      • LoadMore 加载更多
      • Empty 缺省页
      • Skeleton 骨架屏
      • Parse 富文本
    • 拓展组件

      • ShareSheet 分享面板
      • Result 结果页
      • FilterBar 筛选栏
      • SingleInput 单输入框
      • DigitalRoller 数字滚轮
      • DigitalKeyboard 数字键盘
      • LicensePlate 车牌号键盘
      • SwiperDot 轮播图指示点
      • CopyText 长按复制
      • CubicBezier 贝塞尔曲线
      • ImageCropper 图片裁剪
      • Drag 拖拽排序
      • SlideVerify 滑动验证码
      • RotateVerify 旋转验证码
      • SliderCaptcha 滑块拼图验证
    • 组件
    • 表单组件
    Mr zhang
    2023-07-24
    目录

    Form 表单校验

    Form 表单校验,提供了常用的表单校验方法,支持传入自定义校验方法,自带错误消息提示。

    # 支持平台

    App(vue) App(nvue) H5 小程序
    ✓ ✓ ✓ ✓

    # 代码演示

    部分示例演示,完整使用请参考文档API。

    # 基础使用

    通过 ref 属性来注册组件引用信息。注册完成后,我们可以通过this.$refs.form访问到对应的组件实例,并调用上面的实例方法。

    <wui-form ref="form">
    <wui-input required label="姓名" borderTop placeholder="请输入姓名" v-model="formData.name"></wui-input>
    <wui-input required label="手机号" placeholder="请输入手机号码" v-model="formData.mobile"></wui-input>
    <view class="wui-btn__box">
      <wui-button text="Submit" bold @click="submit"></wui-button>
    </view>
    </wui-form>
    
      const rules: any = [
        {
          name: 'name',
          rule: ['required', 'isChinese', 'minLength:2', 'maxLength:6'],
          msg: [
            '请输入姓名',
            '姓名必须全部为中文',
            '姓名必须2个或以上字符',
            '姓名不能超过6个字符',
          ],
        },
        {
          name: 'mobile',
          rule: ['required', 'isMobile'],
          msg: ['请输入手机号', '请输入正确的手机号'],
        },
        {
          name: 'code',
          rule: ['required'],
          msg: ['请输入验证码'],
        },
        {
          name: 'password',
          rule: ['required', 'isEnAndNo'],
          msg: ['请输入密码', '密码为4~30位数字和字母组合'],
        },
        {
          name: 'confirmPwd',
          rule: ['required', 'isSame:password'],
          msg: ['请输入确认密码', '两次输入的密码不一致'],
        },
        {
          name: 'age',
          rule: ['isNumber', 'range:[1,149]'],
          msg: ['请输入正确的年龄', '请输入正确的年龄范围:1~149'],
        },
        {
          name: 'idCard',
          rule: ['isIdCard'],
          msg: ['请输入正确的身份证号码'],
        },
        {
          name: 'email',
          rule: ['isEmail'],
          msg: ['请输入正确的邮箱'],
        },
        {
          name: 'amount',
          rule: ['isAmount'],
          msg: ['请输入正确的金额,允许保留两位小数'],
        },
        {
          name: 'wechatNo',
          validator: [
            {
              msg: '微信号不正确!请输入6~20位以字母开头,字母、数字、减号、下划线组合的微信号',
              method: checkWxNo,
            },
          ],
        },
        {
          name: 'agree',
          validator: [
            {
              msg: '请勾选并同意《相关条款》',
              method: checkAgree,
            },
          ],
        },
      ];
      const formData = ref<any>({
        name: '',
        mobile: '',
        code: '',
        password: '',
        confirmPwd: '',
        age: '',
        idCard: '',
        email: '',
        amount: '',
        wechatNo: '',
        text: '',
        ageRange: '1',
        motion: '1',
        switchRes: false,
        area: '',
        dateTime: '',
        score: 0,
        img: '',
        agree: false,
      });
    const submit = () => {
        console.log(formData.value);
        formRef.value
            .validator(formData.value, rules)
            .then(async (res: any) => {
                console.log(res);
                if (res.isPassed) {
                    Toast('校验成功!', { duration: 1500 });
                }
            })
            .catch((err: any) => {
                console.log(err);
            });
    };
    

    # Slots

    插槽名称 说明
    default 组件内部内容,由多个表单组件组成

    # Props

    属性名 类型 说明 默认值 平台差异说明
    padding Array 表单外层padding值(上,右,下,左),同css顺序,如:['32rpx','32rpx'] [ ] -
    show Boolean 是否显示校验错误信息 true -
    disabled Boolean 是否禁用该表单内的所有组件,透明遮罩层 false -
    top Number, String 错误提示框top值,单位:px 0 H5端默认为44(px),如果未使用默认导航栏,需要将top值设置为0
    left Number, String 错误提示框left值,单位:rpx 24 -
    right Number, String 错误提示框right值,单位:rpx 24 -
    background String 错误提示框背景色 #FF2B2B 非Nvue端默认值为空,可通过css变量(--wui-color-danger)改变背景颜色
    size Number,String 错误提示文本字体大小,单位rpx 28 -
    color String 错误提示文本字体颜色 #fff -
    radius Number, String 错误提示框圆角值,单位rpx 16 -
    duration Number 错误提示框单次显示时间,单位ms 2000 -
    labelSize Number, String FormItem 组件标题字体大小,单位rpx,默认使用全局设置值 0 -
    labelColor String FormItem 组件标题字体颜色 #333 -
    labelWidth Number, String FormItem 组件label宽度,单位rpx,默认使用全局设置值 0 -
    labelAlign String FormItem 组件label对齐方式,可选值:left,right left -
    asteriskColor String FormItem 组件星号颜色 #FF2B2B -
    asteriskPosition String FormItem 组件星号位置,可选值:left,right left -

    # Events

    事件名 说明 回调参数
    - - -

    # Methods

    方法名 说明 传入参数 返回参数
    validator 表单验证方法 model : Object 表单数据 rules : Array 校验规则数据 checkAll : 是否校验所有元素 { isPassed : 是否验证通过 errorMsg : 错误消息 }
    /*
     单校验方法参数详细说明
     @param model  表单数据对象
     @param rules 表单验证规则
     @param checkAll 是否校验所有元素 (V1.7.0+ 支持)
    */
    validator: function(model, rules, checkAll = false)
    
    /*
    =======================
    model:Object 表单数据,格式 {key:value,key:value}
    
    rules:Array<Object> 校验规则数据,格式 [{name:value,rule:[],msg:[],validator:[]}]
          -------------------
    	  name:String,元素的名称,与model中key一致
    	  rule:Array<String> ,内置的校验方法名称集合,详细见下方说明
    	  msg:Array<String>,对应rule规则方法的错误提示信息
    	  validator:Array<Object>,自定义校验方法集合,格式 [{msg:'出错后提示信息',method:Function 校验法法}]
    	            -----------
    				method:校验方法约定必须返回 true 或 false 作为校验结果
    				
    checkAll:Boolean 是否校验所有元素并返回所有错误信息。(V1.7.0+ 支持)
    =======================
    */
    
    
    // rule 内置校验方法名称详细说明。组合使用,如:['required','isMobile']
    /*
    =======================
    required:必填项。非必填情况下,如果值为空则不进行校验
    isMobile:是否为手机号码
    isEmail:是否为邮箱
    isCarNo:是否为车牌号
    isIdCard:是否为身份证号
    isAmount:是否为金额,允许保留两位小数
    isNumber:是否为数字
    isChinese:是否全为中文
    isNotChinese:是否不包含中文,可以有特殊字符
    isEnglish:是否为英文
    isEnAndNo:是否为英文和数字组合 4~30 位
    isEnOrNo:只包含英文或者数字
    isSpecial:是否有特殊字符,若有则返回false
    isEmoji:是否有表情符号,若有则返回false
    isDate:是否为日期:2021-08-09
    isUrl:是否为URL地址
    isSame:与某个key值是否相同,传值:'isSame:key',不相同则返回false
    range:数值范围,传值:'range:[1,9]'
    minLength:最小长度,传值:'minLength:Number',如:'minLength:1'
    maxLength:最大长度,传值:'maxLength:Number',如:'maxLength:149'
    isKeyword:是否包含关键词,多个以英文逗号分隔,包含则返回false。传值:'isKeyword:key1,key2'
    =======================
    */
    
    Slider 滑块选择器
    FormItem 表单项

    ← Slider 滑块选择器 FormItem 表单项→

    Theme by Vdoing | Copyright © 2023-2023 Mr zhang | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式