2016-10-22 5 views
-1

ユーザー入力のキーコードを確認してフロントエンドの検証を行っています。このアプローチはchromeとInternet Explorerでは成功していますが、Firefoxブラウザのキーコードにアクセスすることはできません。firefoxブラウザで特別なcharectersのキーコードにアクセスするには?

function alphanumeric_only(e) 
{ 
var keycode; 
if (window.event) keycode = window.event.keyCode; 
else if (event) keycode = event.keyCode; 
else if (e) keycode = e.which; 
else return true; 
if(
(keycode >= 48 && keycode <= 57) || (keycode >= 65 && keycode <= 90) || (keycode >= 97 && keycode <= 122) || (keycode == 35) || (keycode == 32) || (keycode == 44) || (keycode == 45) || (keycode == 95)) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
return true; 
}` 
次のように私たちは、入力フィールドから、その関数を呼び出している

.....

<div style="float: left;"> 
    <input type="text" id="customname" onkeypress="return alphanumeric_only(this);" value=""> 
</div> 
あなたはexpicitly関数に引数として thisを渡している
+0

を働いて、このコードを試すことができます//developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent –

+0

私はこれらのオプションをすべて試して、キーコードをFirefoxで未定義にしています..... – Rajat1937

答えて

0

こんにちはあなたはこれらのいずれかを試してみてください、それはすべてのブラウザ:)

<p id="demo"></p> 
<div style="float: left;"> 
    <input type="text" id="customname" onkeypress="alphanumeric_only(event)" value=""> 
</div> 

<script> 
function alphanumeric_only(event) 
{ 
    var keycode1 = event.which || event.keyCode; 
    document.getElementById("demo").innerHTML = "The Unicode value is: " + keycode1 ; 
    if((keycode >= 48 && keycode <= 57) || (keycode >= 65 && keycode <= 90) || (keycode >= 97 && keycode <= 122) || (keycode == 35) || (keycode == 32) || (keycode == 44) || (keycode == 45) || (keycode == 95)) 
    { 
    return true; 
    } 
    else 
    { 
    return false; 
    } 
    return true; 

} 
</script> 
0

、ないイベント

onkeypress="return alphanumeric_only(this);" 

つまり、関数内のeが要素であり、イベントではありません。

function alphanumeric_only(e) { 

    // "e" is the element. not the event 

これらのブラウザはグローバルwindow.eventをサポートしていますが、Firefoxはまだサポートされていないため、これはChromeとIEでも機能します。

溶液も

onkeypress="return alphanumeric_only(event, this);" 

function alphanumeric_only(e, element) { ... 

またはより良いは、インラインジャバスクリプト

<input type="text" id="customname" value=""> 

を除去し、適切なイベント・ハンドラを使用してイベントを渡すことですこれはもっと楽になります

`event.key、event.charCode、event.event.key、event.metaKey`ます。https:
document.getElementById('customname').addEventListener('keypress', function(evt) { 
    var keycode = evt.which || evt.keyCode; 

    if ((keycode >= 48 && keycode <= 57) || 
     (keycode >= 65 && keycode <= 90) || 
     (keycode >= 97 && keycode <= 122) || 
     (keycode == 35) || (keycode == 32) || 
     (keycode == 44) || (keycode == 45) || 
     (keycode == 95)) { 

     e.preventDefault(); 

    } 
}); 
+0

簡単な説明をありがとう...私は持っています引数として "this"の代わりに "event"を渡しました。それは正常に動作します... – Rajat1937

+0

ありがとうadeneo ... – Rajat1937

関連する問題