91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue如何實現表單數據驗證

發布時間:2022-03-24 10:20:39 來源:億速云 閱讀:520 作者:iii 欄目:web開發

這篇文章主要講解了“vue如何實現表單數據驗證”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“vue如何實現表單數據驗證”吧!

  • 為el-form表單添加:rules

  • 在data中定義規則

  • 將定義的規則綁定在el-form-item

代碼如下:

<!--登錄表單區域-->
  <el-form :model="loginform" label-width="0px" class="login_form" :rules="loginformrules">
  <!--用戶名-->
   <el-form-item prop="username">
    <el-input v-model="loginform.username" prefix-icon="el-icon-user"></el-input>
  </el-form-item>
  <!--密碼-->
  <el-form-item prop="password">
    <el-input v-model="loginform.password" prefix-icon="el-icon-lock" type="password"></el-input>
  </el-form-item>
  <!--按鈕區域-->
  <el-form-item class="btns">
    <el-button type="primary">登錄</el-button>
    <el-button type="info">重置</el-button>
  </el-form-item>
  </el-form>
<script>
 export default{
 data(){
  return {
  //登錄表單數據綁定對象
  loginform:{
   username:'',
   password:''
  },
  //表單驗證規則
  loginformrules:{
   //驗證用戶名是否合法
   username:[
   { required: true, message: '請輸入用戶名', trigger: 'blur' },
   { min: 3, max: 10, message: '長度在 3 到 10 個字符', trigger: 'blur' }
   ],
   //驗證密碼是否合法
   password:[
   { required: true, message: '請輸入密碼', trigger: 'blur' },
   { min: 6, max: 15, message: '長度在 6 到 15 個字符', trigger: 'blur' }
   ]
  }
  }
 }
 }
</script>

ps:下面看下vue 自定義指令input表單的數據驗證的代碼

一、代碼

<template>
  <div class="check" >
    <h3>{{msg}}</h3>
    <div class="input">
      <input type="text" v-input v-focus><span>{{msg1}}</span>
    </div>
    <div class="input">
      <input type="text" v-input v-required><span>{{msg2}}</span>
    </div>
    <div class="input">
      <!-- required:true/false 表示這個是必填項 -->
      <input type="text" v-input v-checked="{required:true,}"><span>{{msg3}}</span>
    </div>
    <div class="input">
      <!-- <input type="text" v-input v-validate="'required|email|phone|min(5)|max(15)|minlength(6)|maxlength(12)|regex(/^[0-9]*$/)'">
      required 驗證是否是必填項
      email 驗證是否是郵箱
      phone 驗證是否是電話號碼
      min(5) 驗證最小值
      max(3) 驗證最大值
      minlength(6) 驗證最小長度
      maxlength(12) 驗證最大長度
      regex(/^[0-9]*$/) 進行正則驗證
      -->
      <input type="text" v-input
          v-validate="'required|min(5)|max(15)|minlength(6)|maxlength(12)|regex(/^[0-9]*$/)'" placeholder="多選驗證">
    </div>
    <div class="input">
      <!--
      驗證必須是數字:/^[0-9]*$/
      驗證由26個英文字母組成的字符串:/^[a-za-z]+$/
      驗證手機號: /^[1][3,4,5,7,8][0-9]{9}$/;
      驗證郵箱:/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
      -->
      <input type="text" v-input v-validate="'required|phone'" placeholder="驗證手機號碼">
    </div>
    <div class="input">
      <input type="text" v-input v-validate="'required|email'" placeholder="驗證郵箱">
    </div>
  </div>
</template>

<script>
  export default {
    name: 'check',
    data() {
      return {
        msg: '指令',
        tipsbordercolor: 'red',
        msg1: '最簡單的指令',
        msg2: '驗證不能為空的指令',
        msg3: '進行正則驗證',
        tipsmsg: '',
      }
    },

    directives: {
      // 修飾input框的指令
      input: {
        // 當被綁定的元素插入到dom上的時候
        inserted: function (el) {
          el.style.width = "300px";
          el.style.height = "35px";
          el.style.lineheight = "35px";
          el.style.background = "#ddd";
          el.style.fontsize = "16px";
          el.style.border = "1px solid #eee";
          el.style.textindent = "5px";
          el.style.textindent = "8px";
          el.style.borderradius = "5px";
        }
      },
      // input框默認選中的指令
      focus: {
        inserted: function (el) {
          el.focus();
        }
      },
      // 不能為空的指令
      required: {
        inserted: function (el) {
          el.addeventlistener('blur', function () {
            if (el.value == '' || el.value == null) {
              el.style.border = "1px solid red";
              console.log('我不能為空');
            }

          })
        }
      },
      // 驗證指令
      checked: {
        inserted: function (el) {
          return el
        }
      },
      // 驗證
      validate: {
        inserted: function (el, validatestr) {
          // 將驗證規則拆分為驗證數組
          let validaterulearr = validatestr.value.split("|");
          // 監聽失去焦點的時候
          el.addeventlistener('blur', function () {
            //失去焦點進行驗證
            checkedfun();
          });

          // 循環進行驗證
          function checkedfun() {
            for (var i = 0; i < validaterulearr.length; ++i) {
              let requiredregex = /^required$/; // 判斷設置了required
              let emailregex = /^email$/; // 判斷設置了email
              let phoneregex = /^phone$/; // 判斷設置了 phone
              let minregex = /min\(/; //判斷設置了min 最小值
              let maxregex = /max\(/; //判斷設置了max 最大值
              let minlengthregex = /minlength\(/; //判斷設置了 minlength 最大長度
              let maxlengthregex = /maxlength\(/; //判斷設置了 maxlength 最大長度
              let regexregex = /regex\(/;
              // 判斷設置了required
              if (requiredregex.test(validaterulearr[i])) {
                if (!required()) {
                  break;
                } else {
                  removetips();
                }

              }

              // 判斷設置了email
              if (emailregex.test(validaterulearr[i])) {
                if (!email()) {
                  break;
                } else {
                  removetips();
                }

              }

              // 判斷設置了 phone
              if (phoneregex.test(validaterulearr[i])) {
                if (!phone()) {
                  break;
                } else {
                  removetips();
                }

              }

              // 判斷是否設置了最小值
              if (minregex.test(validaterulearr[i])) {
                if (!eval(validaterulearr[i])) {
                  break;
                } else {
                  removetips();
                }

              }

              // 判斷是否設置了最大值
              if (maxregex.test(validaterulearr[i])) {
                if (!eval(validaterulearr[i])) {
                  break;
                } else {
                  removetips();
                }

              }

              // 判斷設置了最小長度
              if (minlengthregex.test(validaterulearr[i])) {
                if (!eval(validaterulearr[i])) {
                  break;
                } else {
                  removetips();
                }

              }

              // 判斷設置了最大長度
              if (maxlengthregex.test(validaterulearr[i])) {
                if (!eval(validaterulearr[i])) {
                  break;
                } else {
                  removetips();
                }

              }

              // 判斷測試正則表達式
              if (regexregex.test(validaterulearr[i])) {
                if (!eval(validaterulearr[i])) {
                  break;
                } else {
                  removetips();
                }

              }

            }

          }

          // 驗證是否是必填項
          function required() {
            if (el.value == '' || el.value == null) {
              // console.log("不能為空");
              tipmsg("不能為空");
              return false;
            }

            return true;
          }

          // 驗證是否是郵箱
          function email() {
            let emailrule = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
            if (!emailrule.test(el.value)) {
              tipmsg("請輸入正確的郵箱地址");
              return false;
            }

            return true;
          }

          // 驗證是否是手機號碼
          function phone() {
            let phonerule = /^[1][3,4,5,7,8][0-9]{9}$/;
            if (!phonerule.test(el.value)) {
              tipmsg("請輸入正確的手機號碼");
              return false;
            }

            return true;
          }

          // 最小值驗證
          function min(num) {
            if (el.value < num) {
              tipmsg("最小值不能小于" + num);
              //console.log('最小值不能小于'+num);
              return false;
            }

            return true;
          }

          // 最大值驗證
          function max(num) {
            if (el.value > num) {
              tipmsg("最大值不能大于" + num);
              //console.log('最大值不能大于'+num);
              return false;
            }

            return true;
          }

          // 最小長度驗證
          function minlength(length) {
            if (el.value.length < length) {
              //console.log('最小長度不能小于'+length);
              tipmsg("最小長度不能小于" + length);
              return false;
            }

            return true;
          }

          // 最大長度進行驗證
          function maxlength(length) {
            if (el.value.length > length) {
              //console.log('最大長度不能大于'+length);
              tipmsg("最大長度不能大于" + length);
              return false;
            }
            return true;
          }

          // 進行正則表達式的驗證
          function regex(rules) {
            if (!rules.test(el.value)) {
              tipmsg("請輸入正確的格式");
              return false;
            }
            return true;
          }

          // 添加提示信息
          function tipmsg(msg) {
            removetips();
            let tipsdiv = document.createelement('div');
            let curdate = date.parse(new date());
            tipsdiv.innertext = msg;
            tipsdiv.classname = "tipsdiv";
            tipsdiv.id = curdate;
            tipsdiv.style.position = "absolute";
            tipsdiv.style.top = el.offsettop + 45 + 'px';
            tipsdiv.style.left = el.offsetleft + 'px';
            document.body.appendchild(tipsdiv);
            //settimeout(function(){
            // document.getelementbyid(curdate).remove();
            //},2000);
          }

          // 移除提示信息
          function removetips() {
            if (document.getelementsbyclassname('tipsdiv')[0]) {
              document.getelementsbyclassname('tipsdiv')[0].remove();
            }

          }
        },
      }
    }
  }
</script>

<style>

  .input {
    padding-bottom: 20px;
    float: left;
    clear: both;
    margin-left: 500px;
    display: block;

  }

  .check input {
    width: 300px;
    height: 35px;
    outline: none;
    background: #ddd;
  }

  .check span {
    padding-left: 20px;
  }

  .tipsdiv {
    height: 27px;
    line-height: 25px;
    border: 1px solid #333;
    background: #333;
    padding: 0px 5px;
    border-radius: 4px;
    color: #fff;
    font-size: 16px;
  }

  .tipsdiv:before {
    content: '';
    display: block;
    border-width: 0 5px 8px;
    border-style: solid;
    border-color: transparent transparent #000;
    position: absolute;
    top: -9px;
    left: 6px;
  }
</style>

感謝各位的閱讀,以上就是“vue如何實現表單數據驗證”的內容了,經過本文的學習后,相信大家對vue如何實現表單數據驗證這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

长丰县| 神池县| 舒城县| 浦北县| 阳新县| 河曲县| 合肥市| 麻江县| 潞城市| 琼海市| 杂多县| 嘉定区| 德保县| 丽江市| 德令哈市| 平定县| 融水| 满洲里市| 五常市| 永定县| 临泉县| 缙云县| 永泰县| 滁州市| 二连浩特市| 峨边| 黄平县| 安义县| 苗栗县| 琼海市| 南汇区| 通江县| 庆安县| 贵南县| 九台市| 凤山县| 丰台区| 柘荣县| 金堂县| 横山县| 彭水|