数字验证在Firefox中无效

时间:2011-08-06 08:12:30

标签: javascript asp.net html

我有一个文本框,我只需要接受数字。键盘中的所有其他键不会在textbox中生成事件。我创建了一个javascript代码

<script type="text/javascript">
function onlyNumbers(evt)
{
var e = event || evt; // for trans-browser compatibility
var charCode = e.which || e.keyCode;

if (charCode > 31 && (charCode < 48 || charCode > 57))
    return false;

return true;
}
</script>

html是

<asp:TextBox ID="txtFreeship" runat="server" Width="50px" onkeypress="return onlyNumbers();">
</asp:TextBox>

它在mozilla firefox中无法正常工作(在Internet Explorer中完美运行)。任何人都可以回答

3 个答案:

答案 0 :(得分:0)

您需要从onkeypress传递'event'对象。 您可以参考Textbox onKeyPress in Firefox not working

答案 1 :(得分:0)

就像已经回答的那样,你必须使用event。但它仍然无法在Firefox(FF)中工作,因为keyCodekeypress事件返回0。这是实现您想要的简化方法。在文本框中,使用onkeypress="return onlyNumbers(event.charCode || event.keyCode);"charCode是FF使用的)。

现在onlyNumbers可能很短:

function onlyNumbers(chr){
 return !(chr > 31 && (chr < 48 || chr > 57))
}

请参阅this jsfiddle

答案 2 :(得分:0)

在表单加载

上调用以下函数
function isDecimalKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && charCode > 46 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    else {
        return true;
    }
}


txtNoSeat.Attributes["onKeyPress"] = "Javascript:return isNumberKey(event);";