【问题标题】:How to Access the keycodes of special charecters in firefox browser?如何在Firefox浏览器中访问特殊字符的键码?
【发布时间】:2017-03-04 14:46:33
【问题描述】:

我们通过检查用户输入的键码来执行前端验证。这种方法在 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>

【问题讨论】:

标签: javascript php jquery google-chrome firefox


【解决方案1】:

您明确地将 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();

    }
});

【讨论】:

  • 感谢您的简短解释...我已将“事件”而不是“此”作为参数传递。它工作正常...
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多