验证Javascript中的数字在Firefox中不起作用

验证Javascript中的数字在Firefox中不起作用,javascript,validation,firefox,Javascript,Validation,Firefox,当输入文本为0到10(0,1,2,3,4,5,6,7,8,9,10)时,此验证返回true。 退格在Firefox中不起作用,在Google Chrome中,Internet Explorer工作得很好。我试图启用退格的字符码,但问题仍然存在。 我如何让它在firefox中工作 我有这个: <script> function compruebacampo(evt, campotexto) { var charCodeOfZero = 48; var numberJus

当输入文本为0到10(0,1,2,3,4,5,6,7,8,9,10)时,此验证返回true。 退格在Firefox中不起作用,在Google Chrome中,Internet Explorer工作得很好。我试图启用退格的字符码,但问题仍然存在。 我如何让它在firefox中工作

我有这个:

<script>
function compruebacampo(evt, campotexto)
{
    var charCodeOfZero = 48;
    var numberJustEntered = evt.charCode - charCodeOfZero;
    var fullString = campotexto.value + "" + numberJustEntered;

    var matchesOne = false;
    for (var i = 0; i <= 10; i++) {
        if (fullString == ("" + i)) 
            matchesOne = true;
    }

    if (!matchesOne)
        return false;
}
</script>


<input type="textbox" onkeypress="return compruebacampo(event,this)" >

功能compruebacampo(evt、campotexto)
{
var charCodeOfZero=48;
var numberJustEntered=evt.charCode-charCodeOfZero;
var fullString=campotexto.value+“”+numberJustEntered;
var matchesOne=false;

对于(var i=0;i请尝试此选项,它只允许在字段中输入数字:

函数compruebacampo(e,campotexto){
如果(e.which!=8&&e.which!=0&&e.which<48 | e.which>57)){
返回false;
}
}

我本来打算编写一个使用浏览器特定案例的函数(通过
navigator.userAgent
),但我觉得这太笨重和复杂了。我认为最简单的方法是将事件处理程序绑定到特定输入,并让它听
keyCode
s(
在FireFox中的key
s)。此方法还避免了内联JavaScript,这无疑是一个优点

event.keyCode < 58 && event.keyCode > 47
在FireFox中,这将捕获所有数字(
0-9
),因为上述操作将失败

event.keyCode == 8 || event.keyCode == 0
捕获退格并允许它们通过

HTML

<input type="text" id="numberInput">

JavaScript

document.getElementById("numberInput").onkeypress = function (event) {
    if (event.keyCode < 58 && event.keyCode > 47 || event.key > -1 && event.key < 10) {
        /* nothing */
    } else if (event.keyCode == 8 || event.keyCode == 0) {
        /* nothing */
    } else {
        event.preventDefault();
    }
}
document.getElementById(“numberInput”).onkeypress=函数(事件){
if(event.keyCode<58&&event.keyCode>47 | | event.key>-1&&event.key<10){
/*没什么*/
}else if(event.keyCode==8 | | event.keyCode==0){
/*没什么*/
}否则{
event.preventDefault();
}
}
我在Safari、FireFox和Chrome上进行了测试。这三种浏览器对我都有效。我相信你可以将这些布尔值重写为一个
if
block


“按下某个键时会触发keypress事件,该键通常会生成一个字符值”--我知道人们会因为我在这么小的情况下使用它而对我大喊大叫,但它是如此简单和跨浏览器:你为什么不使用jQuery?好的,我记住@elclars谢谢你的帮助,但我只想验证0,1,2,3,4,5,6,7,8,9,10不是所有的数字。有任何建议请询问你的帮助,但我只需要0,1,2,3,4,5,6,7,8,9,10所有的号码,你知道吗
<input type="text" id="numberInput">
document.getElementById("numberInput").onkeypress = function (event) {
    if (event.keyCode < 58 && event.keyCode > 47 || event.key > -1 && event.key < 10) {
        /* nothing */
    } else if (event.keyCode == 8 || event.keyCode == 0) {
        /* nothing */
    } else {
        event.preventDefault();
    }
}
 $('input').keypress(function (e) {    
 if ($(this).attr('id') == "txtBoxId") {
                        regex = new RegExp("^[0-9\b]+$");
                        var charString = String.fromCharCode(!e.charCode ? e.which : e.charCode);
                        if (regex.test(charString)) {
                            return true;
                        }
                        else {
                            e.preventDefault();
                            return false;
                        }
                    }
}