-2

我想钝化表单操作,因为我用 js 提交表单。但是如果有表单动作 js 不起作用并且页面重定向动作 url。我删除了表单标签并将 div 标签与#combination id 一起放置,但它对 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>
4

2 回答 2

2

您必须使用“preventDefault”来防止表单的默认行为,然后开始您的 ajax 调用或其他任何操作;)。

$("#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;

});
于 2012-11-28T16:22:15.927 回答
0

您确实无法以这种方式调用处理程序的问题:

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

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

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

想想链:

  1. 您使用 jquery 调用表单的提交方法。
  2. 虽然为表单触发了事件,但在表单实际提交之前您更改了位置。
  3. 这会取消提交,而是将您重定向到任何内容

如果你真的想要这样做,你可以通过两种方式来做:

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

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

    或者

     $("#combination").submit(function(event){
        // code here
        return false;
     });
    
于 2012-11-28T16:26:20.493 回答