为什么jquery中 e.preventDefault() 这个方法不起作用

时间:2022-11-24 12:07:04
尝试着学习jquery,做了个小练习,完全按照书本上的。可是,发现当点击submit提交按钮后,在没有满足输入条件的情况下,也提交了。 说明函数preventDefatult没有起作用,请问为什么,如何改正。

<script type="text/javascript" language="javascript">
        //<!-- 1 只允许输入数字 -->
        $(document).ready(function()
        {
            $('.error').hide();
            $('.submit').click(function(event)
            {
                var data=$('.infobox').val();
                var len=data.length;
                var c=0;
                for(var i=0; i<len; i++)
                {
                    c=data.charAt(i).charCodeAt(0);
                    if(c==45 && i==0)   //允许负值;
                    {
                        continue;
                    }
                    if(c<48 || c>57)
                    {
                        $('.error').show();
                        event.preventDefatult();
                        break;
                    }
                    else
                    {
                        $('.error').hide();
                    }
                }
            });
        });
        
    </script>


<form id='signup' method="post" action="">

    <div>
        <span class="label">
            Enter Age
        </span>
        <input type="text" class="infobox" />
        <span class="error">Only numericals allowed</span>
    </div>
    <input class="submit" type="submit" value="Submit" />

</form>


谢谢,在线等。

6 个解决方案

#1


问题补充,这段代码是判断文本框内输入的是否为数字,允许 第一位为负号

#2



if (c < 48 || c > 57) {
                        $('.error').show();
                        return false;//直接return false
                    }
                    else {
                        $('.error').hide();
                    }

#3


你不是用的IE吧, IE只有事件冒泡,这样行,但其他浏览器都支持事件捕获,还没冒泡就发生了
http://www.cnblogs.com/zhenn/archive/2011/02/20/1959059.html

http://www.liloy.info/archives/103.html

#4


拼写错误 event. preventDefatult();  
应该是
event.preventDefault();

#5


拼写错误,这个方法在chrome和firefox里都有效。这里和事件冒泡无关。

#6


应该return false;就可以了。

#1


问题补充,这段代码是判断文本框内输入的是否为数字,允许 第一位为负号

#2



if (c < 48 || c > 57) {
                        $('.error').show();
                        return false;//直接return false
                    }
                    else {
                        $('.error').hide();
                    }

#3


你不是用的IE吧, IE只有事件冒泡,这样行,但其他浏览器都支持事件捕获,还没冒泡就发生了
http://www.cnblogs.com/zhenn/archive/2011/02/20/1959059.html

http://www.liloy.info/archives/103.html

#4


拼写错误 event. preventDefatult();  
应该是
event.preventDefault();

#5


拼写错误,这个方法在chrome和firefox里都有效。这里和事件冒泡无关。

#6


应该return false;就可以了。