uni-app如何監聽input輸入,小寫變成大寫,並且過濾掉不想要的字符?!

在做input輸入過濾監聽的時候,用watch監聽改變值,界面上的值會雷打不動的不按照你的思維變化,以下監聽只是一個示例,需要其他過濾字符的,需要修改正則表達式。

這裏提供,監聽輸入的時候,只能是數字和字母,並且小寫字母要變爲大寫字母。不廢話,直接上代碼:

  • 輸入框準備完畢,因爲要自己監聽輸入,因此把v-model拆分使用,input的方法是重點
<input type="text" placeholder="請輸入17位VIN碼(必填)" maxlength="17" @input="vinInput" :value="formData.vin" />
  • 過濾方法
// 過濾vin輸入
vinInput(e) {
	let val = e.detail.value;
	if (/[^a-zA-Z0-9]/g.test(val)) { // 先過濾不需要的字符,只保留數字和字母
		val = val.replace(/[^a-zA-Z0-9]/g, '');
	}
	
	if (!/^[A-Z\d]+$/.test(val)) {// 再進行轉換,小寫轉爲大寫
		val = val.toUpperCase();
	}
	this.formData.vin = val; //這裏對應的是value綁定的變量
	return val; // 最後輸出值,要保證輸入框的值和value綁定的值一致
},
  • 因爲我這裏在完成輸入過濾之後,還會進行其他操作,因爲還需要在watch裏面再次監聽formData.vin這個變量。
  • 可能有小夥伴疑問,爲啥不直接在上述的vinInput方法直接操作,那是因爲input只能監聽到輸入,但是如果你是其他方式把數據填充進來的,那就沒辦法進行相應的操作了。
	watch: {
		'formData.vin'(val) {
			this.vinCheck = null; 
			// 如果有17位,則開始請求後臺,帶出數據
			if (val.length == 17) {
				// do something
			}
		}
	},

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章