在表单提交jQuery后设置Form操作

时间:2015-07-23 17:42:55

标签: javascript php jquery forms form-submit

我如何" SET"表格提交后的行动(不改变)?

<form id="serialize" action="newjob.php?serialize=newjob" method="post">
<button id="jobsearch" name="jobsearch">GET FROM DB</button>
</form>

表单已提交并显示我需要从db中获取的值,设置表单的新操作,提交后的示例我如何得到这样的一个所以我可以将值添加到db?

<form id="serialize" action="newjob.php?faulty=newjob" method="post">
<button id="jobsearch" name="jobsearch">ADD TO DB</button>
</form>

据我所知,在网上搜索这个jquery只有CHANGING(onsubmit)而不是提交后

$(function(){
$('#serialize').submit(function (event)
{
    var newaction = 'newjob.php?faulty=newjob';
    $(this).attr('action', newaction);
});
});

可以提交AFTER表单,然后为同一表单设置新的表单操作吗?我唯一需要做的就是因为我不能在表格中嵌入一个表格(嵌套)

2 个答案:

答案 0 :(得分:1)

从我看到你使用的是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();
}

此代码在您的案例场景中不会按原样运行,但我相信您可以找到它背后的逻辑。 jQuery离我太远了,无法给你一个绝对的答案。

希望它有所帮助。

答案 1 :(得分:1)

您无法修改 .submit()事件处理程序中的表单属性,因为它已使用典型的提交方法提交。
在提交完毕后,文档已加载,并且尚未捕获为表单设置的任何提交事件。

您有两种方法可以解决问题。

  1. AJAX请求而不是传统的表单子目录(推荐);
    您应该在原始页面上处理服务器响应(从PHP发回的数据),如此(不修改HTML):

    $('#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 ...
            }
        });
    });
    
    1. 只需检查url是否包含特定的字符串,并根据该值修改表单的action attr(我将其视为解决方法,因为这些天来,AJAX 很多更多“用户友好”提交表单):

      if (window.location.href.indexOf("?serialize=newjob") > -1) {
          $('#serialize').attr('action', 'newjob.php?faulty=newjob');
      }