Keypress在chrome工作但不是firefox

时间:2014-08-28 18:58:12

标签: javascript google-chrome firefox keypress

我试图阻止用户输入任何数字。它适用于Chrome,但不适用于Firefox。我经历了很多解决方案,但没有运气。我用过keydown,按键,不同的活动等等。请帮忙。如果它有助于这一切都在aspx文件中。

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>

2 个答案:

答案 0 :(得分:5)

我不明白这一行

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

你在哪里举办活动?这在Firefox中引发了错误。

我修改了代码并使用Chrome和Firefox对其进行了测试。首先是带输入的HTML

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

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

另外,如果仅为数字键入字段,则在现代浏览器中,您可以在输入字段中使用“数字”类型。这应该在尝试提交时向用户抛出可见错误。当然,您还应该根据需要以其他方式验证字段值。