2017-10-09 112 views
0

我嘗試這樣的:爲什麼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,它有禁用()。但在移動,它不禁用

我想禁用點。所以用戶不能輸入點號

我該怎麼辦?

注意

在dekstop,代碼工作。但在移動設備中,代碼不起作用。移動中的點(。)沒有禁用

回答

0

問題在於,使用'keydown'或'keyup'的鍵碼在各個瀏覽器中似乎不一致。也許操作系統也有影響。你可以在各種瀏覽器和移動設備上測試here

我想你會發現更多的一致性,而不是使用v-on:keypress事件。在我的快速(不完整的移動設備)測試中,以下內容一致返回「46」。快速警告,我注意到鍵入'。'在我的Android鍵盤上的Firefox手機我收到兩個按鍵事件。

//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 = "."被填充到手機的Firefox。

console.log(event); 
相關問題