国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - vue 移動端的input 數(shù)字輸入優(yōu)化
phpcn_u1582
phpcn_u1582 2017-07-05 10:59:49
0
3
1087

這是移動端使用的,
input type 為number 時 英文或中文都沒有限制,而且maxlength不起作用,
input type 為tel 時 英文或中文也都沒有限制,但maxlength有作用,所以用tel,
keyup 是為了過濾數(shù)字以外的字符。
請問大神這段代碼還有沒有優(yōu)化的空間?

<input v-model="phoneNumber" placeholder="輸入手機號" 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>
phpcn_u1582
phpcn_u1582

全部回復(3)
迷茫
  1. phoneNumber 初始值應該是字符串的 '',否則對一個可能為 null 的變量調用 replace 是不安全的。

  2. var self = this 是不必要的。

  3. handleFilterLetters 好長啊,改成 onKeyUp 不好讀一點嗎(

  4. <input> 一行寫的太長了,eslint-airbnb 的規(guī)則是

<input
  v-model="phoneNumber"
  placeholder="輸入手機號"
  type="tel"
  maxlength="11"
  @keyup="handleFilterLetters"
/>
劉奇

樓上說的都對
題主還可以多注意一下 code style
比如:
self.phoneNumber=self.phoneNumber.replace(/[^d]/g,'');

寫成
self.phoneNumber = self.phoneNumber.replace(/[^d]/g,'');

比較好

僅有的幸福

這里用的局部filter

如果想可復用程度高點,全局filter也可以的

<p id="app" >
  <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, '')
    }
  }
})
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板