如何在firefox浏览器中获取特殊字符的关键字码


How to Access the keycodes of special charecters in firefox browser?

我们通过检查用户输入的键码来执行前端验证。这种方法在chrome和ie浏览器中是成功的,但我们无法在firefox浏览器中访问密钥。

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>

你好,你可以试试这段代码,它在所有浏览器中都有效:)

<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>

您明确地将this作为函数的参数传递,而不是事件

onkeypress="return alphanumeric_only(this);"

表示函数中的e是元素,而不是事件

function alphanumeric_only(e) {
    // "e" is the element. not the event

这仍然适用于Chrome和IE,因为这些浏览器支持全局window.event,但Firefox不支持。

解决方案是同时传递事件

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

function alphanumeric_only(e, element) { ...

或者更好,删除内联的javascript

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

,并使用合适的事件处理程序,使这变得容易得多

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();
    }
});