如何在firefox浏览器中访问特殊字符的密钥代码?

时间:2016-10-22 10:28:46

标签: javascript php jquery google-chrome firefox

我们通过检查用户输入的密钥代码来执行前端验证。这种方法在chrome和Internet Explorer中很成功,但我们无法访问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>

2 个答案:

答案 0 :(得分:0)

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

onkeypress="return alphanumeric_only(this);"

这意味着函数中的e是元素,而不是事件

function alphanumeric_only(e) {

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

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

解决方案是传递事件

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

    }
});

答案 1 :(得分: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>