为什么选择jQuery $('#form')。submit();完美的工作但不是$('#form')。submit(function(){...});?

时间:2016-10-10 14:32:05

标签: javascript php jquery ajax

当我尝试使用jQuery提交表单时,简单

$('#form').submit();

完美无缺,但

$('#form').submit(function(){...});

完全被忽略了。 没有错误消息,没有任何消息。 它继续前进并继续我的其余代码。

我在这里发现的更接近的问题是: JQuery form submit with function not working 它运行得更好但是submit()重新加载页面并取消了Ajax的好处。 不幸的是,它对我不起作用:(

这是我的整个代码(我将真正的项目简化为最简单的测试目的):

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>please help</title>
    <link href="../htdocs/css/styles.css" rel="stylesheet">
</head>
<body>

<form id="myForm" method="post">
    <input name="key01" type="checkbox" id="key01" checked>
    <input name="key02" type="checkbox" id="key02" checked>
    <input name="key03" type="checkbox" id="key03" checked>
    <input name="key04" type="checkbox" id="key04" checked>
    <input name="key05" type="checkbox" id="key05" checked>

    <div id="testBtn">test submit</div>
</form>

<div id="resultDisplay"></div>

<script src="../htdocs/js/jquery-2.2.4.min.js"></script>
<script src="../htdocs/js/icheck.min.js"></script>
<script type="application/javascript">
    $(function () {
        $('#testBtn').click(function () {
            console.log('click out');
            $('#myForm').submit(function () {
                console.log('click In');
                $.ajax({
                    method: 'POST',
                    url: 'myResult.php',
                    data: $(this).serialize()
                }).done(function (data) {
                    console.log('data back');
                    $("#resultDisplay").html(data);
                }).fail(function () {
                    alert("error");
                });
            });
        });
    });
</script>

</body>
</html>

我唯一拥有的console.log是提交功能之外的第一个。 我尝试使用alert,使用get方法,在Apache和nginx服务器上使用不同的jQuery版本... 它完全相同:&#39;(

PHP:5.6.23 jQuery 2.2.4(测试了几个版本)

请帮帮忙,我绝望了:(

1 个答案:

答案 0 :(得分:2)

实际上$('#form')返回一个数组,正确执行它的方法是指定数组的项目将执行给定的函数:

$("#form")[0].submit(function(){
    //do the stuff
})