1

正是在这里,我试图让我的文本框只接受数字。我能够检测到 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>

这是小提琴

我如何达到同样的效果?

4

2 回答 2

5

使用keypress事件来拦截更改。

示范

于 2013-03-03T19:49:50.443 回答
0

正如@dystroy 所说,您应该将您的keydown 更改为keypress,并且您应该删除 event.preventDefault();接近尾声(第二个)以使代码正常工作。

JSFiddle 更新

于 2013-03-03T20:04:05.170 回答