无法使用jQuery以编程方式提交表单

时间:2013-03-10 19:12:47

标签: jquery onclick submit

我试图在用户离开页面时以编程方式提交表单,无论他们是否点击了“提交”按钮。我过去曾使用过这种方法从函数中提交表单,但出于某种原因我无法使用onclick

当用户点击“提交”按钮时,表单正在正确提交,因此html表单和php肯定是正确设置的。我正在使用jquery-1.8.2

<form name="form2" id="form2" method="post" action="form2-exec.php">
    <!-- Form Elements -->
    <a class="back" href="form1.php" onClick="submitForm()">BACK</a>
    <a href="#" class="next"><input type="submit" value="SUBMIT" /></a>
</form>

<script language="javascript" type="text/javascript">
function submitForm() {
    $("#form2").submit();
}
</script>

我也尝试过使用点击功能

$(".submitForm").click(function () {
$("#taste").submit();
});

并在HTML中替换此行:

<a class="back" href="form1.php" onClick="submitForm()">BACK</a>

使用:

<a class="back submitForm" href="form1.php">BACK</a>

3 个答案:

答案 0 :(得分:1)

这是一个棘手的情况。如果您提交表单,那么您的后退按钮的重定向将无法正常工作。如果你使用href重定向后退按钮,你的提交将不会像时间点击功能一样工作,你的下一页将加载。如何使用jquery触发ajax调用将表单的数据发送到服务器,在回调函数中将页面重定向到上一页?

有关如何执行此操作的详细信息,请查看此帖子:Submit form using AJAX and jQuery

答案 1 :(得分:1)

#Whizkid在提交后右键单击后面的按钮不起作用,   尝试以下方法,它利用jquery onbeforeunload事件来测试表单是否已经提交;如果没有,它会显示消息,通知用户表单中未保存的数据:

$(function() {
        // Set the unload message whenever any input element get changed.
        $('input').change(function() {
            setConfirmUnload(true);
        });

        // Turn off the unload message whenever a form get submitted properly.
        $('form').submit(function() {
            setConfirmUnload(false);
        });
    });

    function setConfirmUnload(on) {
        var message = "You have unsaved data. Are you sure to leave the page?";
        window.onbeforeunload = (on) ? function() { return message; } : null;
    }

答案 2 :(得分:0)

我通过将HTML中的所有必要链接更改为具有名称属性的提交按钮,并在PHP中添加一个语句来解决此问题,该语句根据用户单击的按钮重定向用户。

HTML

<input type="submit" name="whereto" value="BACK" />
<input type="submit" name="whereto" value="SUBMIT" />

PHP

// Insert Statement
if ($_POST['whereto'] == 'BACK') {
    header("location: form1.php");
} elseif ($_POST['whereto'] == 'SUBMIT') {
    header("location: form3.php");
}