Javascript 在表单提交jQuery后设置表单操作
提交表单后,如何“设置”操作(不更改)Javascript 在表单提交jQuery后设置表单操作,javascript,php,jquery,forms,form-submit,Javascript,Php,Jquery,Forms,Form Submit,提交表单后,如何“设置”操作(不更改) <form id="serialize" action="newjob.php?serialize=newjob" method="post"> <button id="jobsearch" name="jobsearch">GET FROM DB</button> </form> 是否可以在表单提交后为同一表单设置新表单操作?我需要完成的唯一一件事是,我不能在表单中包含表单(嵌套)从我看到您正在使用jQu
<form id="serialize" action="newjob.php?serialize=newjob" method="post">
<button id="jobsearch" name="jobsearch">GET FROM DB</button>
</form>
是否可以在表单提交后为同一表单设置新表单操作?我需要完成的唯一一件事是,我不能在表单中包含表单(嵌套)从我看到您正在使用jQuery,我以前也做过类似的事情 诀窍是通过一个常规按钮来更改提交按钮,该按钮触发一个函数来执行您必须执行的操作,最后使用
.sumbit()
大概是这样的:
<form id='changingForm' .... >
<button onclick='changingFunction()' ...>
</form>
function changingFunction(){
var newaction = 'newjob.php?faulty=newjob#tabs-2';
$('#changingForm').attr('action', newaction);
$('#changingForm).submit();
}
函数更改函数(){
var newaction='newjob.php?fault=newjob#tabs-2';
$('changingForm').attr('action',newaction);
$('#changingForm).submit();
}
这段代码可能不会像您的案例场景那样工作,但我相信您可以找到它背后的逻辑。jQuery远远落后于我,无法给你一个绝对的答案
希望有帮助。您无法在
.submit()事件处理程序中修改表单属性,因为它是使用典型的提交方法提交的。
提交发件人后,将加载新的文档,并且尚未捕获表单的任何提交事件集
你有两个选择来解决这个问题
AJAX请求,而不是传统的表单提交(推荐)
您应该在原始页面上处理服务器响应(从PHP发回的数据),就像这样(不修改HTML):
只需检查url是否包含特定字符串,并基于此修改表单的操作
attr(我将其视为一种变通方法,因为现在AJAX在提交表单时更加“用户友好”):
你为什么需要新的行动?听起来这是一个糟糕的问题解决方案。第一种形式是从数据库中获取值,将其粘贴到多个文本框,第二种形式是在创建新id时将值插入数据库。我需要实现这一点,因为我不能在Nest中使用两种形式。我编辑了我的评论,我的错误,这一逻辑似乎相当错误。不知道你所说的“巢中不能有第二种形式”是什么意思。编辑您的原始帖子,以更详细地描述您正试图完成的任务。我的意思是,这是我的理解,即您希望在按下“提交”按钮后,在将其发送到服务器之前更改某些内容。如果没有,您可以使用回调来根据发送第一个表单后返回的数据更改表单。很抱歉,这不是在按“提交”之后,而是在完成“提交”之后,然后在不自动提交的情况下更改表单
$(function(){
$('#serialize').submit(function (event)
{
var newaction = 'newjob.php?faulty=newjob';
$(this).attr('action', newaction);
});
});
<form id='changingForm' .... >
<button onclick='changingFunction()' ...>
</form>
function changingFunction(){
var newaction = 'newjob.php?faulty=newjob#tabs-2';
$('#changingForm').attr('action', newaction);
$('#changingForm).submit();
}
$('#serialize').submit(function (event){
// prevent typical submit method:
event.preventDefault();
var that = $(this), newaction;
$.ajax({
url : that.attr('action'),
method : 'GET',
data : that.serialize(),
// dataType : set accordingly to the type of data received from PHP,
success : function(data_received_from_php){
if(that.attr('action') === 'newjob.php?faulty=newjob'){
newaction = 'newjob.php?serialize=newjob';
// do something with "data_received_from_php" for that specific "action" ...
}else{
newaction = 'newjob.php?faulty=newjob';
// do something with "data_received_from_php" for that specific "action" ...
}
// set the new action attribute:
that.attr('action', newaction);
},
error : function(){
// handle errors ...
}
});
});
if (window.location.href.indexOf("?serialize=newjob") > -1) {
$('#serialize').attr('action', 'newjob.php?faulty=newjob');
}