2017-05-03 14 views
1

に私はASP.Netに取り組んでいない、私は次の関数を含むJavaScriptファイルへのリンクを持つWebフォームを持っている:JavaScript検証はクロームで動作しますが、Firefoxの

$(".string").keydown(function (e) { 
    var x = (e.charCode) ? e.charCode : ((e.which) ? e.which : e.keyCode); 
    if ($.inArray(e.keyCode, [46, 8, 27, 16, 13, 32, 192, 9, 209, 241]) !== -1 || 
     (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) || 
     (e.keyCode == 67 && (e.ctrlKey === true || e.metaKey === true)) || 
     (e.keyCode == 88 && (e.ctrlKey === true || e.metaKey === true)) || 
     (e.keyCode >= 35 && e.keyCode <= 39)) { 
     return; 
    } 
    if (e.keyCode < 65 || e.keyCode > 90) { 
     e.preventDefault(); 
    } 
}); 

これに成功私はChrome上にñn(209,241)文字を入力することができますが、Firefoxではこれを行えません。Firefoxを扱うときはe.whichを使用するべきですが動作しません。私はjavascriptとあまり良くないので、ここで何を理解していないのですか?

+0

を追加するために必要なあなたはFFのデバッガでブレークポイントを設定すると、NとNの文字を押した後e.keyCodeの値を検査しようとしたことがありますか? –

+0

両方の場合で0を返すだけですが、e.key = 'ñ'を認識しているようです - 非常に遅い返信のsoooorry、いくつかの作業が積み重なって – YPZ

答えて

1

ミスター・リー・ジェンキンスの助けを借りて、このようなコードを修正することで、問題を解決するのに十分なことが分かりました。ただ、(e.key == "ñ" || e.key == "Ñ") ||

$(".string").keydown(function (e) { 
    var x = (e.charCode) ? e.charCode : ((e.which) ? e.which : e.keyCode); 
    if ($.inArray(x, [46, 8, 27, 16, 13, 32, 192, 9, 209, 241]) !== -1 || 
     (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) || 
     (e.keyCode == 67 && (e.ctrlKey === true || e.metaKey === true)) || 
     (e.keyCode == 88 && (e.ctrlKey === true || e.metaKey === true)) || 
     (e.keyCode == 88 && (e.ctrlKey === true || e.metaKey === true)) || 
     (e.key == "ñ" || e.key == "Ñ") || 
     (e.keyCode >= 35 && e.keyCode <= 39)) { 
     return; 
    } 
    if (e.keyCode < 65 || e.keyCode > 90) { 
     e.preventDefault(); 
    } 
}); 
+0

解決が見つかりました! –

関連する問題