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

溫馨提示×

溫馨提示×

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

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

vue自定義指令限制輸入框輸入值的步驟與完整代碼

發布時間:2020-10-11 17:15:54 來源:腳本之家 閱讀:512 作者:小豪看世界 欄目:開發技術

需求

前端開發過程中,經常遇到表單校驗的需求,比如校驗用戶輸入框的內容,限制用戶只能輸入數字。

本文內容基于 element-ui,el-form 組件可以綁定 model、rule 用于表單內容校驗,但如果有多個表單多個輸入框那就得寫很多個 rule,雖然方法可以通用可是使用起來也是比較繁瑣的,可通過自定義執行實現一次注冊,多次使用。

Vue 自定義指令

我們使用 el-input 作為表單的輸入框

1. 先注冊一個自定義指令

import Vue from 'vue';

Vue.directive('LimitInputNumber', {
 bind(el) {
 # do something
 },
});

2.使用自定義指令

直接在組件內綁定 v-limit-input-number 指令

<el-input v-limit-input-number />

3.指令內部校驗

onkeypress 事件

onkeypress 事件會在鍵盤按鍵被按下并釋放一個鍵時發生

可在事件觸發時檢測若輸入的值不為數字,直接返回 fales

Vue.directive('LimitInputNumber', {
 bind(el) {
 el.onkeypress = (event) => {
  return (/[\d]/.test(String.fromCharCode(event.keyCode || event.which))) || event.which === 8;
 };
 },
});

但該事件存在一個問題,就是在中文輸入法的時候無法觸發事件,導致用戶可以輸入中文

vue自定義指令限制輸入框輸入值的步驟與完整代碼

oninput 事件

oninput 事件在用戶輸入時觸發

可在事件觸發時進行過濾,過濾掉那些不為數字的值,并重新綁定到輸入框上,解決了中文輸入法下的問題

Vue.directive('LimitInputNumber', {
 bind(el) {
  el.oninput = () => {
   el.children[0].value = el.children[0].value.replace(/\D/ig, '');
  };
 },
});

vue自定義指令限制輸入框輸入值的步驟與完整代碼

完整代碼

import Vue from 'vue';

Vue.directive('LimitInputNumber', {
 bind(el) {
  el.onkeypress = (event) => {
   return (/[\d]/.test(String.fromCharCode(event.keyCode || event.which))) || event.which === 8;
  };
  el.oninput = () => {
   el.children[0].value = el.children[0].value.replace(/\D/ig, '');
  };
 },
});

總結

到此這篇關于vue自定義指令限制輸入框輸入值的文章就介紹到這了,更多相關vue自定義指令限制輸入框輸入值內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

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

AI

大丰市| 澜沧| 安阳市| 江口县| 安龙县| 大姚县| 汉中市| 越西县| 江山市| 邢台市| 商洛市| 瓦房店市| 德钦县| 芜湖县| 夏河县| 宜昌市| 苗栗市| 肇源县| 澄城县| 两当县| 阿坝| 阿荣旗| 广饶县| 公安县| 常德市| 电白县| 长泰县| 财经| 九龙县| 东安县| 龙岩市| 嫩江县| 沙田区| 长葛市| 莒南县| 沁源县| 弥勒县| 漠河县| 河池市| 龙胜| 兴城市|