2014-08-28 88 views
4

我试图阻止用户输入任何内容,但一些。它适用于Chrome,但不适用于Firefox。我经历了许多解决方案,但没有运气。我使用了keydown,按键,不同的事件等,请帮忙。如果这有助于这一切都在一个aspx文件。按键时的工作而在Firefox

onkeypress="return myFunction(event);" 

<script type="text/javascript"> 
    // Check if key press is a number 
    function myFunction(evt) { 
     var e = event || evt; // for trans-browser compatibility 
     var charCode = e.which || e.keyCode; 

     if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
      alert("Enter Numbers Only"); 
      return false; 
     } 
     return true; 
    } 
</script> 
+0

的HTML你尝试使用e.charCode? e = evt.which || evt.charCode || evt.keyCode; – SSA 2014-08-28 19:10:34

回答

5

我不明白这行

var e = event || evt; // for trans-browser compatibility 

你从哪里得到的事件?这是在Firefox中引发错误。

我修改的代码和与Chrome和Firefox进行了测试。先用输入

<input onkeypress="return validate(event);" /> 

和功能

// Check if key press is a number 
function validate(e) 
{ 
    var charCode = e.which || e.keyCode; 

    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
    { 
     alert("Enter Numbers Only"); 
     return false; 
    } 
    return true; 
} 

http://jsfiddle.net/bskqpgvy/2/

+0

这工作!简单的修复和直接点 – user3339242 2014-08-28 19:12:44

+0

伟大的,选择作为有效的答案,并为他的贡献信贷@Jason。 – FrEaKmAn 2014-08-28 19:14:12

1

不知道,如果脚本的一部分没有被列入,但是从我所看到的上面提供的代码没有任何浏览器。

http://jsfiddle.net/e5d8txa2/

window.addEventListener("keypress", function(evt) { 
    myFunction(evt); 
}); 

// Check if key press is a number 
function myFunction(evt) { 
    var e = event || evt; // for trans-browser compatibility 
    var charCode = e.which || e.keyCode; 

    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     alert("Enter Numbers Only"); 
     return false; 
    } 
    return true; 
} 

顺便说一句,如果该字段只对数字类型的,在现代浏览器,你可以使用输入字段的“数字”类型。这应该在尝试提交时向用户抛出可见的错误。当然,您还应该根据需要以其他方式验证字段值。

+0

感谢您的贡献 – user3339242 2014-08-28 19:16:54

相关问题