$(“#form”)。submit()不会发送按下按钮的名称

时间:2015-02-03 14:55:54

标签: php jquery

我有一个很长的表单,它是一个滑动页面形式,因此它被分解为用户的部分。

我通过jQuery进行错误检查,这是代码:

$("input.next").click(function(e) {
        e.preventDefault();
        var stage = ((($("#container").position().left) / 950) * -1) + 1;
        var thispage = $(this).closest("div.page");
            var errors = false;
            var isFinal = $(this).hasClass("send");

            thispage.find("input.txt").each(function () {
                if(($(this).val() == "") && (!$(this).hasClass("optional"))) {
                $(this).css("background","#FFE5E5");
                errors = true;
            } else {
                $(this).css("background","#E5FFEA");
            }
        });

        thispage.find(".checkbox").each(function () {
            if(!$(this).is(':checked')) errors = true;
        });

        if(thispage.find("#profileimage").val() == "") errors = true;

        thispage.find("textarea.txt").each(function () {
                if(($(this).val() == "") && (!$(this).hasClass("optional"))) {
                $(this).css("background","#FFE5E5");
                errors = true;
            } else {
                $(this).css("background","#E5FFEA");
            }
        });

        if(!errors) {
            // if no errors, slide to next page.
            if(!isFinal) {
                thispage.find("div.errormessage").fadeOut(50);
                $("#container").animate({left: "-=950px"}, 800, function () {
                    $("ul#stages li").removeClass("active");
                    $("ul#stages li.stage"+stage).addClass("active");
                    console.log("Stage: " + stage);
                });
            }
        } else {
            thispage.find("div.errormessage").fadeIn(100);  
        }

        console.log("isFinal: " + isFinal);
        console.log("Errors: " + errors);

        if((isFinal) && (!errors)) {
            console.log("submitting form...");
            $("#enrolform").submit();               }

    });

然而,当按下div.next.send按钮时,它的名称为sendapplication,并且在我正在使用的PHP代码中:

if(isset($_POST['sendapplication'])) {

..检查整个表单是否已提交。我需要这样做的原因是因为我还有一个' save'表单的功能,允许用户保存数据并稍后返回。

问题是当用户点击“发送应用”时按钮我没有在$ _POST或$ _REQUEST变量中得到它。我认为原因是因为它是发送它的jQuery脚本,而不是按钮。由于e.preventDefault()行,该按钮被禁止。

如何检查是否按下了特定按钮?在某种程度上,我可以操纵.submit()函数吗?

1 个答案:

答案 0 :(得分:0)

您可以在click()方法中添加以下代码:

var self= $(this),
form = self.closest(form),
tempElement = $("<input type='hidden'/>");

// clone the important parts of the button used to submit the form.
tempElement
   .attr("name", this.name)
   .val(self.val())
   .appendTo(form);

有关详细信息,请参阅jQuery submit() doesn't include submitted button

Anthony Grist的评论可能是更好的解决方案:)