无法通过jquery更改表单操作

时间:2013-01-08 01:41:31

标签: php javascript jquery forms submit

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

虽然我似乎无法让它发挥作用。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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();

  });

});

答案 1 :(得分:1)

您的代码似乎没问题。有一些事情你可以尝试让这个工作。

  1. 确保您的脚本被拉入页面,一种方法是使用Chrome调试器中的“来源”标签并在html主题部分中搜索其他文件

  2. 确保在包含jQuery之后已经包含了datatale脚本,因为它肯定取决于它。

  3. 检查jQuery是否正确包含且仅一次。

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

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