Javascript密码不能在Firefox中运行,但在chrome中运行良好

时间:2012-08-05 05:58:53

标签: javascript

我正在进行表单验证,其中哪个电话号码必须只是数字!代码适用于chrome,但不适用于Firefox和IE。请给我一些解决方案

我的代码如下

function noLet(event) {
    if (event.keyCode == 46 || event.keyCode==8 || event.keyCode > 47 && event.keyCode <      58) {
        event.returnValue = true;
    } 
    else {
        event.returnValue = false;
    }
}

HTML:
    

 onkeypress="noLet(e)"><label id="mobph"></label><font 

size="1"><br>Max 10 numbers only allowed!</font> 

4 个答案:

答案 0 :(得分:2)

我建议使用以下代码来解决您的问题。这就是我在做的事情。测试和工作就像一个魅力,即chrome和firefox:

//return numbers and backspace(charCode == 8) only
function noLet(evt) {
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode >= 48 && charCode <= 57 || charCode == 8)
        return true;
    return false;

答案 1 :(得分:1)

您可以使用键/字符代码来检测按下的键是否为数字。首先,您必须检测密钥/字符代码跨浏览器的内容(记得使用event.keypress作为您的事件进一步确保兼容性)。然后,将其从十进制值转换为其字符。然后,您可以使用parseInt()将其解析为整数,如果函数内的第一个值无法解析为int,则返回NaN。如果是NaN,则阻止默认操作。

var numbersOnly = function(e){
    var charCode = (typeof e.which === "number") ? e.which : e.keyCode,
        chr = String.fromCharCode(charCode);
    if(isNaN(parseInt(chr, 10))) e.preventDefault();
}

<input type="text" name="phoneNumber" onkeypress="numbersOnly(event);">

答案 2 :(得分:0)

因为在Firefox上,至少在keypress处理程序中是charCode,而不是keyCode,并且忽略“returnValue”(调用preventDefault()来停止插入)。

答案 3 :(得分:0)

浏览器存在兼容性问题。这是我在一些RND中发现的解决方案。希望它能以某种方式帮助你; Click Here