elementui表单输入框部分校验--判断

<template>
  <div>
    <div class="binding_main_nav">
      <div class="binding_main_nav_div">
        <div class="binding_main_nav_div_selection"></div>
        <span>绑定邮箱</span>
      </div>
      <div class="binding_main_nav_div" @click="bindingphonefn">
        <div class="binding_main_nav_div_noselection"></div>
        <span>绑定手机</span>
      </div>
      <div class="binding_main_nav_div" @click="bindingpasswordfn">
        <div class="binding_main_nav_div_noselection"></div>
        <span>修改密码</span>
      </div>
    </div>
    <div class="binding_main_body">
      <div class="binding_main_body_msg">
        <span>点击“获取验证码”接收验证码,并完成验证</span>
      </div>
      <div class="binding_main_body_form">
        <el-form
          class="bindingeamil-form"
          :rules="bindingeamilmsg"
          :model="bindingemail"
          ref="bindingemail"
        >
          <el-form-item prop="bindingemail">
            <span class="bindingeamilImg">
              <img src="@/assets/img/binding/email.png" />
            </span>
            <el-input
              placeholder="请输入邮箱号"
              type="text"
              tabindex="1"
              v-model="bindingemail.email"
              show-word-limit
              maxlength="20"
              ref="email"
            />
          </el-form-item>

          <el-form-item class="bindingemailverifica">
            <span class="bindingeamilImg">
              <img src="@/assets/img/login/loginyanzhengma.png" />
            </span>
            <el-input
              ref="verifica"
              placeholder="请输入验证码"
              v-model="bindingemail.verifica"
              type="text"
              maxlength="6"
              onkeyup="this.value=this.value.replace(/[^\d.]/g,‘‘);"
              tabindex="2"
            />
          </el-form-item>
          <el-button
            v-show="see"
            class="bindingeamil_form_btn"
            type="primary"
            @click="settime"
          >{{content}}</el-button>
          <el-button v-show="!see" class="bindingeamil_form_btn" type="primary">{{content}}</el-button>
        </el-form>
        <el-button type="primary" class="bindingeamilverificabtn">确定</el-button>
      </div>
    </div>
  </div>
</template>

<script>
import storage from "@/config/storage.js";
import { validEmail, validPhone } from "@/components/login/validate";
import config from "@/config";
export default {
  data() {
    var checkBindingEmail = (rule, value, callback) => {
      if (this.bindingemail.email == "" || !this.bindingemail.email.trim()) {
        callback(new Error("邮箱不能为空"));
      }
      if (!validEmail(this.bindingemail.email)) {
        callback(new Error("请输入正确的格式"));
      } else {
        callback();
      }
    };
    return {
      content: "获取验证码",
      see: true,
      totalTime: 60,
      bindingemail: {
        email: "",
        verifica: ""
      },
      bindingeamilmsg: {
        bindingemail: [
          { required: true, validator: checkBindingEmail, trigger: "blur" }
        ]
      },
      bindingEmailVal: ""
    };
  },
  mounted() {
    this.bindingEmailVal = storage.get("loginInputVal");
  },
  methods: {
    bindingphonefn() {
      this.$router.push("/bindingmodifica/phone");
    },
    bindingpasswordfn() {
      this.$router.push("/bindingmodifica/newpassword");
    },
    settime(formName) {
      if (validEmail(this.bindingEmailVal)) {
        this.$message.error({ message: "该账号是邮箱登录,不能继续绑定邮箱" });
      }else{
        //进行输入框判断部分校验
        this.$refs.bindingemail.validateField(‘bindingemail‘,(valid) => {

          if (valid) {
            return false
          } else {
            this.see = false;
          this.$axios
            .get(
              config.KEY.URL_RESGIST +
                "/binding/EmailCode?" +
                "emailNumber=" +
                this.bindingemail.email
            )
            .then(res => {
              console.log(res);
              if(res.data.status == 500){
                this.$message.error({ message: "该邮箱已经在平台注册"});
                setTimeout(() =>{
                  this.bindingemail.email = ‘‘
                },1000)
              }else if(res.data.status == 200){
                var auth_timetimer = setInterval(() => {
                this.totalTime--;
                this.content = this.totalTime + "s后重新发送";
                  if (this.totalTime < 0) {
                      this.totalTime = 60;
                      this.see = true;
                      clearInterval(auth_timetimer);
                      this.content = "重新发送验证码";
                  }
                }, 1000);
              }
            })
            .catch(err => {
              this.$message({ message: "服务器错误" });
            });
          }
        });

      }
    }
  }
};
</script>

<style>
</style>

最主要的代码:

this.$refs.bindingemail.validateField(‘bindingemail‘,(valid) => {

          if (valid) {
            return false
          } else {        //执行的操作      }}//bindingemail为这个表单的总的对象(大数组也可以),后面的 ‘bindingemail‘ 为校验规则,当通过验证的时候执行操作,就可以减少请求次数
  

原文地址:https://www.cnblogs.com/huchong-bk/p/12164974.html

时间: 2024-09-30 03:05:25

elementui表单输入框部分校验--判断的相关文章

Extjs表单输入框异步校验的插件实现

一.效果如图所示 特点: 1.异步后台校验不会对用户操作产生阻塞感: 2.可在用户停止输入后自动校验,避免频繁进行无谓的后台校验: 3.以插件方式实现,方便使用: 二.插件源码如下: /** * Created by jiawenjun on 2016/10/19. */ Ext.define('Ux.plugins.FieldAjaxVerify',{ extend: 'Ext.AbstractPlugin', alias: 'plugin.fieldajaxverify', buffer:5

html表单输入框css样式美化特效源代码下载

html表单输入框css样式美化源代码,响应鼠标动作 原文:html表单输入框css样式美化特效源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463335926784.htm 源代码截图:

js监听input等表单输入框的变化事件oninput

js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变化的,复制粘贴也不能监听到,于是就用到了oninput事件来监听文本框value值的改变.由于是手机端页面没有考虑IE 这货.过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验.比如onchange事件只在键盘或者鼠标操作改变

CSS图标文字对齐和表单输入框文字对齐兼容

张鑫旭的一篇文章,讲到20像素图标对齐和表单元素40像素对齐有所收获,谢谢@张鑫旭 ,很多观点跟平时的处理方式不谋而合,一般来说,我处理图标如果临近的话都会使用同样宽高,然后使用inline-block比较多,表单输入框和按钮以line-height:21-22为准.然后超出的用padding来补充. 以下摘录部分原文中的实践代码. 1.图标和文字对齐 一般的图标和文字对齐html代码: <p><i class="icon"></i>前端开发博客&l

vue elementUI 表单校验(数组多层嵌套)

在使用vue element-ui form表单渲染的时候,会遇到这样的数据结构: { "title":''123455, "email":'[email protected]', "list": [ { "id": "quis consequat culpa ut pariatur", "name": "et quis irure dolore ullamco",

【Vue -- 2/100】element-ui 表单校验规则的应用

element-ui 给el-form表单添加校验规则 <!-- 对话框组件 :visible.sync(设置是否显示对话框) width(设置对话框的宽度) :before-close(在对话框关闭前触发的事件) --> <el-dialog title="添加用户" :visible.sync="addDialogVisible" width="50%"> <!-- 对话框主体区域 --> <el-f

element-ui重置表单并清除校验的方法

this.$refs['activityForm'].resetFields(); 只会重置之前表单的内容,并不会清空 只需在关闭弹框的cancel方法中写上重置表单的方法即可 cancel() { this.$refs.formData.resetFields(); } 重置表单清除校验有另一种更为简便的方法: <Modal v-model="showDialog" :title="modalTitle" :mask-closable="false

element-UI 表单校验失效处理

1.el-form-item 的 prop属性绑定的要是字符串: eg: :prop="'answer[' + 0 + ']' "       //而不是    :prop="answer[0]" v-modal="ruleForm.answer[0]" 2.el-form的modal属性绑定表单数据源:后面的prop属性是fuleForm后面的字段而不是fuleForm.answer eg: :modal="fuleForm"

vue + element ui 阻止表单输入框回车刷新页面

问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止表单回车提交. 测试 下面的代码出现表单回车提交 <body> <div id="app"> <el-form ref="form" :model="form" label-width="80px"&