在提交表单后,设置表单的动作(action)jQuery。
在提交表单后,设置表单的动作(action)jQuery。
提交表单后如何“设置”动作(不是改变)?\n
\n提交表单后,显示我从数据库中需要的值之后,为表单设置新的动作,例如提交后如何获得像这样的值,以便我可以将值添加到数据库中?\n
\n据我所知,通过在网上搜索,这个jQuery只能在提交时进行更改(onsubmit),而不是提交后。\n$(function(){\n$(\'#serialize\').submit(function (event)\n{\n var newaction = \'newjob.php?faulty=newjob\';\n $(this).attr(\'action\', newaction);\n});\n});\n提交表单后是否可能设置相同表单的新表单动作?我需要完成这个的唯一方法是因为我不能在一个表单中嵌套另一个表单。
问题的出现的原因是:用户想要在表单提交后更改表单的操作(action),但是默认情况下,表单提交后会自动跳转到指定的action页面。
解决方法是:使用jQuery来实现在表单提交后更改表单的操作。具体做法是将提交按钮改为普通的按钮,并触发一个函数,在函数中改变表单的action属性,然后使用.submit()
方法来提交表单。
以下是一个示例代码:
function changingFunction(){ var newaction = 'newjob.php?faulty=newjob#tabs-2'; $('#changingForm').attr('action', newaction); $('#changingForm).submit(); }
这段代码可能不能直接适用于你的情况,但是你可以根据这个逻辑做出相应的调整。希望能对你有所帮助。
从我的理解来看,你想要在提交按钮被按下后,在提交到服务器之前更改一些内容。如果不是这样的话,你可以使用一个回调函数来根据第一个表单发送后返回的数据来更改表单。
很抱歉,我的理解可能有误,但是我的意思是在提交完成后再更改表单,而不是自动提交。
问题的原因是在提交表单后,无法在.submit()事件处理程序中修改表单属性,因为表单已经使用传统的提交方法进行了提交。在表单提交后,新的文档被加载,并且任何为表单设置的提交事件尚未被捕获。
解决方法有两种。
第一种方法是使用AJAX请求而不是传统的表单提交(推荐)。
你应该在原始页面上处理服务器响应(从PHP返回的数据),代码如下:
$('#serialize').submit(function (event){ // 防止默认的提交方法: event.preventDefault(); var that = $(this), newaction; $.ajax({ url : that.attr('action'), method : 'GET', data : that.serialize(), // dataType : 根据从PHP接收的数据类型进行设置 success : function(data_received_from_php){ if(that.attr('action') === 'newjob.php?faulty=newjob'){ newaction = 'newjob.php?serialize=newjob'; // 对于特定的"action",对"data_received_from_php"进行一些操作... }else{ newaction = 'newjob.php?faulty=newjob'; // 对于特定的"action",对"data_received_from_php"进行一些操作... } // 设置新的action属性: that.attr('action', newaction); }, error : function(){ // 处理错误... } }); });
第二种方法是简单地检查URL是否包含特定的字符串,并基于此修改表单的action属性(我认为这是一种解决方法,因为现在使用AJAX在提交表单方面更加“用户友好”)。
if (window.location.href.indexOf("?serialize=newjob") > -1) { $('#serialize').attr('action', 'newjob.php?faulty=newjob'); }
以上是解决问题的原因和方法。