阻止在输入字段中输入数字

时间:2010-12-31 18:21:18

标签: javascript html internet-explorer-6

好的,首先是一些背景,我不能使用除YUI之外的任何javascript库来进行这个项目。

我要做的是接受输入并将其阻止为仅允许数字输入。我知道这在验证中更容易做,但PM希望它在onkeypress上。我所拥有的是通过在网络上运行构建而在Firefox中运行良好。不幸的是,这必须与IE8和IE6兼容,并且它都不兼容。

这是我到目前为止所做的:

<script type="text/javascript">
    function onlyNumbers(evt) {
        evt = (evt) ? evt : window.event
        var charCode = (evt.which) ? evt.which : event.keyCode        

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

        return true;

    }
</script>
<input type="text" id="<%=Model.HtmlID %>" value="<%= startingAnswer %>"name="<%=Model.HtmlID %>"
 maxlength="<%=maximumLength %>" onkeypress="return onlyNumbers(event);" />

有关它的错误的任何想法使它在IE中不起作用吗?

2 个答案:

答案 0 :(得分:1)

<script type="text/javascript">
    function onlyNumbers(target) {
        var newVal = document.getElementById(target).value;
        if (isNaN(newVal)) {
            document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");
        }
    }


</script>
<input type="text" id="<%=Model.HtmlID %>" value="<%= startingAnswer %>"name="<%=Model.HtmlID %>"
 maxlength="<%=maximumLength %>" onkeyup="javascript:onlyNumbers('<%=Model.HtmlID %>');" />

花了一些额外的努力和一点点创造力,但我确实得到了这个。这并不是真正禁止输入,而是只要放开密钥就会清除掉任何不允许的内容。实际上也适用于IE6

答案 1 :(得分:0)

YUI将文本字段验证作为其表单模块的一部分。 一个例子(YUI 3)

var myForm = new Y.Form({
method : "post",
action : "/test.php?action=submit",
inlineValidation : true,
fields : [
    {name : 'input1', type : 'text', label : 'Numbers only: ', validator : 'IntegerField'},

    {type : 'submit', label : 'Submit'},
    {type : 'reset', label : 'Reset'}
]
});
myForm.render('#formContainer');