小程序表单提交

本文介绍了小程序中input组件的数据双向绑定以及checkbox的使用。同时,探讨了设计模式的三大类型——结构型、行为型和创建型模式,特别是策略模式在表单验证中的应用,如手机号的必填验证。

input组件

需要借助bindinput事件来实现数据的双向绑定:
在这里插入图片描述
在这里插入图片描述

checkbox

在这里插入图片描述

设计模式的类型

结构型模式

行为型模式

涉及改善不同对象之间的通信,观察者模式

创建型模式

用于处理对象创建机制,单例模式

策略模式

定义了一系列的算法,并以一种可以互换的方式封装他们,而不需要其他的干涉。

新建validator.js,验证

const strategies = {
    //不能为空
    isNonEmpty(value, errMsg) {
        if (value === '') {
            return errMsg;
        }
    },
    //最小长度
    minLength(value, length, errMsg) {
        if (value.length < length) {
            return errMsg;
        }
    },
    //最大长度
    maxLength(value, length, errMsg) {
        if (value.length > length) {
            return errMsg;
        }
    }
}
class Validator {
    constructor() {
        this.cache = [];
    }
    add(value, rules) {
        rules.forEach(item => {
            let ary = item.strategy.split(':');
            this.cache.push(function () {
                const strategy = ary.shift();
                ary.unshift(value);
                ary.push(item.errMsg);
                return strategies[strategy](...ary);
            })
        })
    }
    start() {
        for (var i = 0, validataFunc; validataFunc = this.cache[i++];) {
            const msg = validataFunc();
            if (msg) {
                return msg;
            }
        }
    }
}

export default Validator;

使用:

import Validator from './../../utils/validator'
Page({
    data: {
        formData: {
            name: '',
            password: ''
        }
    },
    changeName(e) {
        this.setData({
            'formData.name': e.detail.value,
        })
    },
    changePassword(e) {
        this.setData({
            'formData.password': e.detail.value,
        })
    },
    formSubmit() {
        const validator = new Validator();
        validator.add(this.data.formData.name, [{
            strategy: 'isNonEmpty',
            errMsg: '用户名不能为空!'
        }, {
            strategy: 'minLength:2',
            errMsg: '用户名最小长度为2个字符!'
        }, {
            strategy: 'maxLength:10',
            errMsg: '用户名最大长度为10个字符!'
        }, ])
        const errMsg = validator.start();
        if (errMsg) {
            wx.showToast({
                title: errMsg,
                icon: 'none',
                image: '',
                duration: 1500,
                mask: true,
            });
            return;
        }
    } 
})

添加验证手机号不能为空:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值