钝化表格行动

时间:2012-11-28 16:18:08

标签: php javascript jquery html forms

我想钝化表单操作,因为我使用js提交表单。但如果有表单操作js不起作用,页面重定向动作URL。我删除了表单标签并使用#combination id放置div标签,但它既不起作用也不起作用 JS:

  $("#combination").submit(function(){
  var url = "www.myurl.com/?view=listen&";

  var i = 0;
  $("input:checked").each(function(){
      url += "tag[" + i + "]" + $(this).val() + "&";
      i++;
  });
  alert(url);
  location.href = url;

});

HTML:

    <form id="combination" action="" method="get" name="combination" target="_self">
    <?php foreach($top_tags as $top_tag):?>
        <input type="checkbox" name="tag[]" value="<?php echo $top_tag['tag_name'];?>" /><?php echo $top_tag['tag_name'];?><br />
        <?php endforeach;?> 
    <input name="" type="submit">
    </form>

2 个答案:

答案 0 :(得分:2)

你必须使用“preventDefault”阻止表单的默认行为,而不是启动你的ajax-call或者什么;)。

$("#combination").submit(function(event){
  event.preventDefault();
  var url = "www.myurl.com/?view=listen&";

  var i = 0;
  $("input:checked").each(function(){
      url += "tag[" + i + "]" + $(this).val() + "&";
      i++;
  });
  alert(url);
  location.href = url;

});

答案 1 :(得分:0)

你真的无法以这种方式调用处理程序的问题:

http://api.jquery.com/submit/

  

handler(eventObject)每次触发事件时执行的函数。

基本上发生了什么,而不是提交表单,你做了重定向。

想想链条:

  1. 使用jquery调用表单的提交方法。
  2. 当事件触发表单时,但在表单实际提交之前,您更改了位置。
  3. 这取消了提交,而是将您重定向到任何
  4. 如果你真的想要这样做,你可以用两种方式来做:

      表单提交后,
    1. 在服务器端重定向
    2. 因为有人说使用ajax http://api.jquery.com/jQuery.ajax/提交到处理程序并以任何方式禁用默认操作

      $("#combination").submit(function(event){
          event.preventDefault();
          // code here
      });
      

      OR

       $("#combination").submit(function(event){
          // code here
          return false;
       });