我有一个很长的表单,它是一个滑动页面形式,因此它被分解为用户的部分。
我通过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()
函数吗?
答案 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的评论可能是更好的解决方案:)