【问题标题】:Cannot change form action via jquery无法通过 jquery 更改表单操作
【发布时间】:2012-12-21 20:04:36
【问题描述】:

我试图在使用 jquery 提交期间将我的表单操作更改为另一个链接。请查看以下代码:

javascript

$(document).ready(function(){
    $("form[name='search']").submit(function(e){
        var submit=$(this);
        submit.attr('action','?search='+submit.find("input[name='tsearch']").val());
    });
});

HTML/PHP

    <form name="search" method="post">
          <input class="inputbox" type="text" name="tsearch" value="<?php echo $text_search; ?>" />

虽然我似乎无法让它工作。如有任何帮助,我们将不胜感激。

【问题讨论】:

  • 我相信这是一个无限循环!
  • 是的,亚历山大。那是一个无限循环。 e.preventDefault() 是不必要的。只需添加操作即可。

标签: php javascript jquery forms submit


【解决方案1】:

这是一个工作示例:http://jsfiddle.net/RmKDT/4/

您可以通过警报看到操作正在发生变化。您也只需重新提交表单即可。

编辑:修复潜在的无限循环

$(function(){

  var submitted = false;
  $('form').submit(function(e){

    if (submitted == true) {

      return;

    }
    e.preventDefault();
    var action = $(this).attr('action');

    alert(action);

    $(this).attr('action', 'two.php');
    action = $(this).attr('action');

    alert(action);

    submitted = true;
    // resubmit the form
    $(this).submit();

  });

});

【讨论】:

  • @Alexander - 修复无限循环
【解决方案2】:

您的代码似乎没问题。您可以尝试一些方法来使其正常工作。

  1. 确保您的脚本已被拉入页面,一种检查方法是使用 Chrome 调试器中的“源”选项卡并在 html 头部部分中搜索其他文件

    李>
  2. 确保在包含 jQuery 之后包含 datatale 脚本,因为它肯定依赖于它。

  3. 检查 jQuery 是否正确包含,并且只包含一次。

  4. 注意 jQuery 冲突。还有一些其他库覆盖了 $,因此您的代码无法正常工作,因为 $ 不再是 jQuery 的别名。您可以使用jQuery.noConflict() 来避免与页面上使用相同变量 $ 的其他库发生冲突。

  5. alert('?search='+submit.find("input[name='tsearch']").val()) 看看你是否得到了你想要的价值。

【讨论】:

  • 您好,Dasun,感谢您的肯定。
猜你喜欢
  • 2012-07-04
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
相关资源
最近更新 更多