zoukankan      html  css  js  c++  java
  • elementui异步后台校验表单,修改重复校验

    elementui简单的form校验这里就不介绍了,这里主要记录下如何通过后台进行指定字段的异步后台校验。

    1.导入axios

    <script src="https://unpkg.com/axios/dist/axios.min.js">

    //为了保证引用速度,可以把axios的js文件copy到项目文件中

    2.注意校验方法的位置

    var vue = new Vue({
            el: '.background',
            data () {
                var validatePhone = (rule, value, callback) => {
                    var reg = /^1[0-9]{10}$/;
                    if(!reg.test(value)){
                        callback(new Error("请输入正确格式手机号"));
                        return;
                    }
                    var params = new URLSearchParams();//后台采用json传参,
    //如果传参出现问题可以参考这篇博客https://blog.csdn.net/wild46cat/article/details/78447467
                     params.append('phone',value);
                     params.append('id',vue.ruleForm.id);//主键id保证在修改数据时对当前不进行校验,sql中排除当前id数据
                    axios.post([[@{/employee/checkPhoneAndEmail}]], params, { emulateJSON: true })
                    .then(function (response) {
                        if (response.data.code !=000) {
                            callback(new Error(response.data.msg));
                        } else {
                            callback()
                        }
                    }).catch(function () {
                                callback(new Error('服务异常'))
                            })
                };
                let validateEmail = (rule, value, callback) => {
                    var reg = /^1d{5}$/;
                    if(!reg.test(value)){
                        callback(new Error("请输入以1开头,长度为6位的数字"));
                        return;
                    }
                    var params = new URLSearchParams();
                    params.append('email',value);
                        axios.post([[@{/employee/checkPhoneAndEmail}]], params, { emulateJSON: true })
                                .then(function (response) {
                                    if (response.data.code !=000) {
                                        callback(new Error(response.data.msg));
                                    } else {
                                        callback()
                                    }
                                }).catch(function () {
                                    callback(new Error('服务异常'))
                                })
                };
                return {
                    employeeData:employeeData,
                    emailSuffix:emailSuffix,
                    ruleForm: {
                        phone: employeeData[0].phone,
                        email: formatEmail,
                       id:'',//数据主键
                    },
                    rules: {
                        phone: [
                            {required: true, trigger: 'blur'},
                        ],
                        email: [//自定义校验规则validator:validateEmail
                    {required: true, validator:validateEmail, trigger: 'blur'}, ], } } }, 
           methods: {
              back(){ window.open([[@{/employee/showHtml}]],"_self"); }, 
              input(){ this.emailDisabled=false; },
      submit(formName){
        this.$refs[formName].validate((valid) => {
            if (valid) {
                var json = {
                    'phone': this.ruleForm.phone,
                    'email': this.ruleForm.email,
                    'userId': this.employeeData[0].user_id,
                     //……提交方法略
                };
    } ,

      

  • 相关阅读:
    使用sequelize-auto生成sequelize的Models
    table中td内容过长自动换行
    编写一个方法,去掉数组的重复元素
    call, apply的用法意义以及区别是什么
    在javascript中使用媒体查询media query
    总结的一些封装好的javascript函数
    只对safari起作用的css hack
    javascrip实现无缝滚动
    Ensures there will be no 'console is undefined' errors
    jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象。
  • 原文地址:https://www.cnblogs.com/SimonHu1993/p/9115181.html
Copyright © 2011-2022 走看看