2017-10-09 7 views
0

私はこのようにしてみてください:(。)コードがdekstopで実行され、I入力ドット、それはまだすることができモバイルでkeydownが機能しないのはなぜですか? vue.js 2

場合

<template> 
    ... 
    <input type="number" class="form-control" v-model="quantity" min="1" v-on:keydown="disableDot"> 
    ...       
</template> 
<script> 
    export default{ 
     ... 
     methods:{ 
      disableDot: function(evt) { 
       evt = (evt) ? evt : window.event 
       let charCode = (evt.which) ? evt.which : evt.keyCode 
       if (charCode === 190 || charCode === 189 || charCode === 187) { 
        evt.preventDefault() 
       } 
       else { 
        return true 
       } 
      } 

     } 
    } 
</script> 

、それは無効でした。しかし、モバイルでは、無効にしません

私はドットを無効にしたい。ユーザーはドットを入力できません

どうすればいいですか? dekstopで

ノート、コード作品。しかし、モバイルでは、コードは動作しません。モバイルでドットが無効になっていない

答えて

0

「keydown」または「keyup」のキーコードがブラウザ間で一貫していないようです。多分OSにも影響があります。さまざまなブラウザやモバイルデバイスでこれをテストできますhere

代わりにv-on:keypressイベントを使用すると、より一貫性があると思います。私のクイック(不完全なモバイル)テストでは、次のように「46」が一貫して返されます。迅速な警告、私はそれを入力して気づいた '。私のアンドロイドキーボードのfirefox mobileで、私は2回のキー押しイベントを受けていました。

//in template 
<input type="number" v-on:keypress="capturePress($event)"> 

//in methods 
capturePress: function(event) { 
    console.log(event.charCode); 
} 

イベント全体を見て回ることをおすすめします。 event.code = "Period"event.key = "."ですが、モバイルファイヤーフォックスにはevent.key = "."と入力されました。

console.log(event); 
関連する問題