无法通过 jquery 更改表单操作

Posted

技术标签:

【中文标题】无法通过 jquery 更改表单操作【英文标题】:Cannot change form action via 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() 是不必要的。只需添加操作即可。 【参考方案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】:

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

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

    李>

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

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

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

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

【讨论】:

您好,Dasun,感谢您的肯定。

以上是关于无法通过 jquery 更改表单操作的主要内容,如果未能解决你的问题,请参考以下文章

JQuery:各种操作表单元素方法小结

无法发送“POST”表单,jQuery 不会检测到提交动作

如何在 JQuery Mobile for iOS 中发生页面更改时添加一些操作

iOS 无法在第一页加载时操作 jQuery DOM 更改

前端 ----jQuery操作表单

在选择更改事件上通过 jquery 提交表单