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的話,也能匹配到)