2011-12-14 119 views
0

如果我有这样的:只允许三个按钮,一个提交Web表单

<form method="post" id="customForm" action=""> 
    //stuff 

    <div id="copiar"> 
     <button class="button" href="#" id="btnAdd0"> 
      <span class="icon icon3">&nbsp;</span> 
     </button> 
     <button class="button" href="#" id="btnDel0"> 
      <span class="icon icon58">&nbsp;</span> 
     </button> 
     <button class="submeter"> 
      <span class="label">Send</span> 
     </button> 
    </div> 
    </form> 

和:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#customForm").submit(function() { 
      var formdata = $("#customForm").serializeArray(); 
      $.ajax({ 
       url: "validation.php", 
       type: "post", 
       dataType: "json", 
       data: formdata, 
       success: function(data, data1) { 
        //stuff 
      }); 
      return false; 
     }); 
    }); 
</script> 

目前,三个按钮发送表单。我的想法是只允许在此按钮提交行动:

<button class="submeter"> 
    <span class="label">Send</span> 
</button> 

我已经尝试过$("#customForm > #copiar > button.submeter").submit(function() { 但重新加载页面。所以不工作。

有什么想法?

回答

1

您必须先停止其他按钮,然后再提交。还使用ID时,你的选择是不是真的有任何需要它像#customForm>另一个ID #copiar“

结合起来试试这个:

$(document).ready(function() { 
    $("#customForm").submit(function(e) { 
     e.preventDefault(); 
     var formdata = $("#customForm").serializeArray(); 
     $.ajax({ 
      url: "validation.php", 
      type: "post", 
      dataType: "json", 
      data: formdata, 
      success: function(data, data1) { 
       //stuff 
      } 
     }); 
    }); 
    $("#customForm button").click(function(e) { 
     var me = $(this); 
     e.preventDefault(); 

     if(me.hasClass("submeter")) $("#customForm").submit(); 
    }); 
}); 

正如已经指出的那样,你并不需要/想在href =“#”

1

为了防止形式的默认行为,则必须使用preventDefault()如下:

$(document).ready(function() { 
    $("#customForm").submit(function(e) { 
     e.preventDefault(); 
     var formdata = $("#customForm").serializeArray(); 
     $.ajax({ 
      url: "validation.php", 
      type: "post", 
      dataType: "json", 
      data: formdata, 
      success: function(data, data1) { 
       //stuff 
     }); 
    }); 
    $("#customForm button.submeter").click(function() { 
     $("#customForm").submit(); 
    }); 
}); 
+0

页仍然加载。 – user947462 2011-12-14 23:33:27

+0

我想你还是想点击的按钮结合的内部另一个的preventDefault,你需要检查,如果点击的按钮是正确的按钮 – kasdega 2011-12-14 23:50:26

1

究竟是什么前两个按钮元件与href目的属性?我怀疑你使用的是按钮而不是常规链接,仅用于格式化/视觉原因。

无论如何,为了您的目的,只需将属性type =“submit”添加到最后一个按钮并移除您为此按钮定义的提交处理程序,它应该可以正常工作。

编辑。您还需要调用preventDefault()方法来停止页面重新加载,正如Phil Klein所指出的

+1

不确定这是否真的回答OP的问题,或许我错过了一些东西,也许你可以发布代码给你提出解决方案 – kasdega 2011-12-14 23:52:01