2017-10-09 13 views
0

私はこのようにしてみてください:(。)のコードが実行され、I入力ドット場合vue.js 2でキーアップを使用してドットを無効にするにはどうすればよいですか?

<template> 
    ... 
    <input type="number" class="form-control" v-model="quantity" min="1" v-on:keyup="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) { 
        evt.preventDefault() 
       } 
       else { 
        return true; 
       } 
      } 

     } 
    } 
</script> 

、それはまだ

私はドットを無効にすることができます。ユーザーはドットを入力できません

どうすればいいですか?

+0

。 –

+1

あなたは[こちらをチェック](https://stackoverflow.com/a/469362/5081877)で、必要なチャレーターで入力できるようにします。 html5の場合['pattern [0-9]'](https://stackoverflow.com/a/13952761/5081877)と[replace method](https://stackoverflow.com/a/35592412/5081877) – Yash

+1

Simply 'key-up 'の代わりに' v-on:keydown'を使います。それ以外は、あなたのコードは大丈夫です – Phil

答えて

2

私はそれが助けになるかもしれませんが、これはあなたの質問のための私の解決策です。あなたはそのための正規表現の検証を使用する必要があります

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    quantity: '' 
 
    }, 
 
    methods: { 
 
    disableDot (e) { 
 
     if (e.charCode === 46) { 
 
     e.preventDefault() 
 
     } 
 
    } 
 
    } 
 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.4/vue.js"></script> 
 

 
<div id="app"> 
 
    <input type="number" v-model="quantity" @keypress="disableDot"/> 
 
</div>

+0

あなたはあなたの答えを変更しましたか? 'watch 'を使った最初の答えは正しいです。 2番目の答えは 'input type =" number "'を使用しません。私は 'input type =" number "'を使いたい。 'input type =" text "' –

+0

'input type = number'の二重' dot'を押すと、数量はNaNになります。それは良い解決策ではありません。そしてもう一つの方法は、少なくとも一つの変数 'oldQuantity'を定義することですが、これは複雑になります。 'watch'を使うと、自己監視で値が変化するので、決してループを終了させません。 –

+0

しかし、私は非常に素晴らしい解決策を見つけ、それはモバイルで動作します。 –

関連する問題