Vue中結(jié)合ElementUI實現(xiàn):限制輸入框只能輸入正整數(shù)

input中禁止輸入小數(shù)和負(fù)數(shù)(只允許輸入正整數(shù))

做法一:利用禁止按鍵的方法,主要是依靠禁止按下減號以及小數(shù)點來完成的
<el-input type="number" v-model="ruleForm.applyNums" placeholder="請輸入.." @keyup.native="proving1($event)" min="1"></el-input>

1.首先要監(jiān)聽keyup(鍵盤按下)事件,因為element ui的組件都是在外層加一層div,所以可能會報錯,所以要在加一個vue事件的修飾符.native,代表原生事件。
2.然后傳個$event對象進(jìn)去獲取原生的DOM(用以觸發(fā)事件本身)
3.接下來就是在methods中寫函數(shù)。

proving1(e) {
  var keynum = window.event ? e.keyCode : e.which;   //獲取鍵盤碼
  var keychar = String.fromCharCode(keynum);  //獲取鍵盤碼對應(yīng)的字符
  if (keynum ==189|| keynum==190||keynum == 109) {
    this.$message.warning('禁止輸入小數(shù)以及負(fù)數(shù)')
    e.target.value = ' '
  }
}

做法二:利用正則來規(guī)避小數(shù)點和負(fù)數(shù)

<el-input type="number" v-model="ruleForm.appliedNums" @blur="BlurText($event)" min="1"></el-input>

1.在這里使用的是element ui 的事件,監(jiān)聽失去焦點事件觸發(fā)時要調(diào)用的事件,同時傳$event參數(shù)
2.在methods中編寫函數(shù)

  BlurText(e) {
    let boolean = new RegExp("^[1-9][0-9]*$").test(e.target.value)
    if(!boolean) {
      this.$message.warn('請輸入正整數(shù)')
      e.target.value = ' '
    }
  }

這里使用的正則的意思代表的是(會正則的大佬就可以省略啦或者幫小弟看看不足之處):
首先我們先看開頭的^和結(jié)尾的$這里分別代表匹配字符串的開頭以及匹配字符串的結(jié)尾,而[1-9]是代表的是匹配1-9其中的數(shù)字,所以會過濾掉負(fù)數(shù)和小數(shù),同時要求開頭必須要以1開頭,后面的則是匹配以0-9結(jié)尾的數(shù)字,而*代表的是0次或多次,也就是不限制結(jié)尾的數(shù)字,合起來的意思就是:我們匹配從1-9中的某個數(shù)開頭,并且以0-9中的某個數(shù)結(jié)尾的匹配。最后呢就是做的判斷了,如果符合我們所定義的正則就不用提示錯誤了,如果不符合呢,就會提示錯誤,同時清空數(shù)據(jù).

做法三:利用ES6語法includes來規(guī)篩掉 . 和 -

1.獲取輸入框的值,對輸入框內(nèi)容進(jìn)行檢索

  var inputText = document.querySelector('#inputText')
  inputText.addEventListener('input',  function() {
    if(this.value.includes('.')){
      console.log('不能輸入小數(shù)點')
    }else if (this.value.includes('-')){
      console.log('不能輸入負(fù)數(shù)')
    }else{
      console.log('正常')
    }

做法四:利用正則匹配出 . 或者 -

方法和方法二一樣,但正則表達(dá)式則是:/^\d+\.\d$/

let regx = /^\d+\.\d+$/;
let num_two = 1.252;
const newNum_two = regx.test(num_two)
console.log(newNum_two)

解釋:

`/^d+`:以任意一個數(shù)字開頭 +:出現(xiàn)一次或多次
`\.`:第二位為小數(shù)點
`\d+$` :以任意一個數(shù)字結(jié)尾并且出現(xiàn)一次或多次
let regx = /^\d+\.\d+$/;
let num_two = 1.252;
const newNum_two = regx.test(num_two)
console.log(newNum_two)
`/^\-`:以 - 號 開頭
`\d`:第二位肯定是個數(shù)字
`\.`:第三位可能會出現(xiàn)0次或者1次的 .
`\d*` 以數(shù)字 結(jié)尾出現(xiàn)0次或多次(這樣就可以如果輸入的單單是-2的話,也能匹配到)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容