javascript - vue 移動(dòng)端的input 數(shù)字輸入優(yōu)化
問(wèn)題描述
這是移動(dòng)端使用的, input type 為number 時(shí) 英文或中文都沒(méi)有限制,而且maxlength不起作用,input type 為tel 時(shí) 英文或中文也都沒(méi)有限制,但maxlength有作用,所以用tel,keyup 是為了過(guò)濾數(shù)字以外的字符。請(qǐng)問(wèn)大神這段代碼還有沒(méi)有優(yōu)化的空間?
<input v-model='phoneNumber' placeholder='輸入手機(jī)號(hào)' type='tel' maxlength='11' @keyup='handleFilterLetters'><script type='text/javascript'> vm = new Vue({ el: '#app', data: {phoneNumber: null, }, methods: {handleFilterLetters: function(){ var self = this; self.phoneNumber=self.phoneNumber.replace(/[^d]/g,’’);}, }})</script>
問(wèn)題解答
回答1:phoneNumber 初始值應(yīng)該是字符串的 ’’,否則對(duì)一個(gè)可能為 null 的變量調(diào)用 replace 是不安全的。
var self = this 是不必要的。
handleFilterLetters 好長(zhǎng)啊,改成 onKeyUp 不好讀一點(diǎn)嗎(
<input> 一行寫(xiě)的太長(zhǎng)了,eslint-airbnb 的規(guī)則是
<input v-model='phoneNumber' placeholder='輸入手機(jī)號(hào)' type='tel' maxlength='11' @keyup='handleFilterLetters'/>回答2:
樓上說(shuō)的都對(duì)題主還可以多注意一下 code style 比如:self.phoneNumber=self.phoneNumber.replace(/[^d]/g,’’);
寫(xiě)成self.phoneNumber = self.phoneNumber.replace(/[^d]/g,’’);
比較好
回答3:這里用的局部filter
如果想可復(fù)用程度高點(diǎn),全局filter也可以的
<p > <input :value='phone | num' @keyup='phoneChange' /></p>
var app = new Vue({ el: '#app', data: { phone: '' }, methods: { phoneChange(e) { this.phone = e.target.value this.$forceUpdate() // 這里必須有 } }, filters: { ’num’: function(value) { return value.replace(/[^d]/g, ’’) } }})
相關(guān)文章:
1. linux運(yùn)維 - python遠(yuǎn)程控制windows如何實(shí)現(xiàn)2. javascript - 從mysql獲取json數(shù)據(jù),前端怎么處理轉(zhuǎn)換解析json類(lèi)型3. thinkPHP5中獲取數(shù)據(jù)庫(kù)數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺(tái)消失不見(jiàn)。有圖有代碼,希望有人幫忙4. django - Python error: [Errno 99] Cannot assign requested address5. android - 安卓做前端,PHP做后臺(tái)服務(wù)器 有什么需要注意的?6. python小白 關(guān)于類(lèi)里面的方法獲取變量失敗的問(wèn)題7. extra沒(méi)有加載出來(lái)8. python - Scrapy如何得到原始的start_url9. mysql - ubuntu開(kāi)啟3306端口失敗,有什么辦法可以解決?10. 求救一下,用新版的phpstudy,數(shù)據(jù)庫(kù)過(guò)段時(shí)間會(huì)消失是什么情況?
