event.preventdefault()不处理文本框的更改事件

时间:2013-03-03 19:47:20

标签: javascript jquery html

这里我正试图让我的文本框只接受数字。我能够检测到keyCode但是event.preventdefault()无效。

完整的html + javascript

<HTML>
    <HEAD>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $("#textbox1").keydown(function(event) {
                    try 
                    {
                        if (event.keyCode >= 48 && event.keyCode <= 57)
                        {
                            alert("valid number");
                        }   
                        else
                        {
                            event.preventDefault();
                            alert("It's NAN");
                        }
                    }
                    catch(ex) {
                        alert('An error occurred and I need to write some code to handle this!');
                    }
                    event.preventDefault();    
                });
            });
        </script>
    </HEAD>
    <BODY>
        <FORM>
            <input type="text" id="textbox1">
        </FORM>
    </BODY>
</HTML>

这是fiddle

我如何实现同样目标?

2 个答案:

答案 0 :(得分:5)

使用keypress事件拦截更改。

<强> Demonstration

答案 1 :(得分:0)

正如@dystroy所说,你应该将你的keydown改为keypress,你应该删除靠近末尾的event.preventDefault();(第二个)以使代码有效。

JSFiddle Updated