3

我试图在使用 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; ?>" />

虽然我似乎无法让它工作。这里的任何帮助将不胜感激。

4

2 回答 2

2

这是一个工作示例: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();

  });

});
于 2013-01-08T01:52:54.770 回答
1

您的代码似乎很好。您可以尝试做一些事情来使其正常工作。

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

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

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

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

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

于 2013-01-08T01:47:03.920 回答