代码之家  ›  专栏  ›  技术社区  ›  forrest

为什么jquery“toggle”按钮触发表单上的提交按钮?

  •  6
  • forrest  · 技术社区  · 14 年前

    我已经构建了一个相当复杂的表单,其中包含一个隐藏的部分,用户可以切换到打开状态,以便在必要时输入更多信息。但是,当你点击这个标签为 我有更多的天性 ,它会触发提交按钮并提前提交表单。

    表单现在在dev中,但可以找到它 here .

    我用于切换按钮的代码是:

    <script type="text/javascript">
        $(function() {
            $("#schedule").accordion({ header: "h5", collapsible: true });
            $("#more-nativities").hide();
            $("#toggle").click(function()   {
                $("#more-nativities").slideToggle("slow");
            });
        });
        </script>
    

    提交按钮的代码非常基本:

    <input id="submit2" type="image" src="_images/btn_register.jpg" name="submit"  alt="" onmouseover="javascript:this.src='_images/btn_register2.jpg'" onmouseout="javascript:this.src='_images/btn_register.jpg'"/>
    

    切换按钮的代码为:

    <button id="toggle">I have more nativities</button>
    

    关于为什么切换按钮触发提交有什么想法吗?更重要的是,如何解决这个问题?

    谢谢!

    4 回复  |  直到 14 年前
        1
  •  11
  •   n00dle    14 年前

    尝试添加类型,即:

    <button type="button" id="#toggle">Text</button>
    

    http://www.w3schools.com/tags/tag_button.asp 说这应该一直被定义。浏览器可能默认为提交按钮。

        2
  •  2
  •   Raffael Luthiger    14 年前

    Esteban有一个解决方案。一个更好的描述在 jQuery tutorial :

     $(document).ready(function(){
       $("a").click(function(event){
         alert("As you can see, the link no longer took you to jquery.com");
         event.preventDefault();
       });
     });
    
        3
  •  1
  •   Esteban Araya    14 年前

    尝试

     return false;
    

    在滑动切换之后,单击切换按钮的“单击”功能。

        4
  •  1
  •   Chris Laplante    14 年前

    来自W3学校:

    始终为指定类型属性 按钮。的默认类型 Internet Explorer是“按钮”,而 在其他浏览器中(在W3C中 规范)为“提交”。

    http://www.w3schools.com/tags/tag_button.asp

    一定要说明 type="button"