2017-06-22 16 views
1

ロケールに基づいてtexfield(通貨用)のユーザー入力を制御するjquery関数を記述しようとしています。アラートは、ドイツのロケールが「de」であることを教えてくれました。しかし、if-elseロジックは機能しません。特定のキーコードのpreventDefault()はif-elseなしでうまく動作します。誰かが私がここで間違っていることを教えてもらえますか?Jquery - IF-ELSEロジックが機能しない

 jQuery(function($) { 
      $('.currency').on('keydown', function(e) { 
       var locale = $('#currFormat').val(); 
       //alert(locale); 

       if (locale.toLowerCase() === "de") {      
        console.log(e.keyCode); 

       if (e.keyCode !== 46 && e.keyCode > 31 && e.keyCode !== 96 && e.keyCode !== 97 && e.keyCode !== 98 && e.keyCode !== 99 && e.keyCode !== 100 && e.keyCode !== 101 && e.keyCode !== 102 && e.keyCode !== 103 && e.keyCode !== 104 && e.keyCode !== 105 && e.keyCode !== 188 e.keyCode !== 37 && e.keyCode !==39 && (e.keyCode < 48 || e.keyCode > 57)) { 
        //stop all non-numbers 
        e.preventDefault(); 

       } else { 
       // Here goes logic for not allowing comma and others (,) 
       } 
      }); 
      }); 

「金額」の値はJSPからの値です。

<input type="hidden" id="CurrFormat" name="currFormat" 
    value="${pageContext.request.locale.language}" /> 
+0

2番目のコンソールログの出力は何ですか? –

+0

それは私がそこに持っていたキーコードであり、コンソールはJSで構文エラーを示しています。これは、私がちょうど編集したif文を指しています。しかし、if-elseを追加する前に私は以前よりもうまく動作しました。 –

答えて

3

あなたはタイプミスがあります。技術的には、ページに存在しない要素を選択しています。

$('#currFormat').val(); 

はまた、このコードがあるので、構文エラーを作ることは容易である理由がある。また、同様

e.keyCode !== 188 e.keyCode !== 37 --> missing logical && between expressions 

コピーペーストエラーです

$('#CurrFormat').val(); 

ことになっています全く読めるわけではありません。代わりに、それを凝縮して簡単にすることができます。

var keyCode = e.keyCode; 
var invalidKeyCodes = [37, 39, 46, 96, 97, 98, 99, 100, 101. 102, 103, 104, 105, 188]; 

if (invalidKeyCodes.indexOf(keyCode) < 0 && keyCode > 31 && (keyCode < 48 || keyCode > 57)) { 
+0

申し訳ありませんが、質問を掲示している間に入力されました。私は自分のコードに正しいIDを持っています。 –

+0

'e.keyCode!== 188 e.keyCode!== 37'?このコピーの貼り付けの問題ですか? –

+0

それは今働いていますか? –

関連する問題