无法通过 jquery 更改表单操作
Posted
技术标签:
【中文标题】无法通过 jquery 更改表单操作【英文标题】:Cannot change form action via jquery 【发布时间】:2012-12-21 20:04:36 【问题描述】:我试图在使用 jquery 提交期间将我的表单操作更改为另一个链接。请查看以下代码:
$(document).ready(function()
$("form[name='search']").submit(function(e)
var submit=$(this);
submit.attr('action','?search='+submit.find("input[name='tsearch']").val());
);
);
<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 更改表单操作的主要内容,如果未能解决你的问题,请参考以下文章