7

jqueryでフォームを送信しようとしています。jqueryがフォームを送信したときにフォーム送信イベントが発生するようにしたい。

ただし、フォームが正常に送信された場合、送信イベント ハンドラーは正常に呼び出されません。

以下はコードです:

<html>

<head>
<title>forms</title>

<script src="../common/jquery-1.6.2.min.js"></script>
<script>
$('#testform').submit(function() {
    $.post($(this).attr("action"), $(this).serialize(), function(html) {
        $("#menu").html('<object>'+html+'</object>');
    });
    return false; // prevent normal submit
});

</script> 

</head>

<body>

    <form id="testform" action="<%=getURL%>" method="post" >
        <!-- <input type="hidden" value="DocQrySetup" name=form>
        <input type="hidden" value="bdqdb1" name=config>-->
        <input type="hidden" value="test" name=otherParams>
    </form>

    <script language=javascript>
        $('#testform').submit();
    </script>

<div id="menu" style="position:relative; bottom: 0; overflow:hidden;">
</div>
</body>

すべてのフォーラムを検索しましたが、解決策を得ることができませんでした。

4

2 に答える 2

25

最初のスクリプトを実行したときはフォームが存在しないため、イベント ハンドラーにはアタッチするものがありません。

そのハンドラーをフォームの後に移動するか、ラップする必要があります

$(document).ready(function() { 
    $('#testform').submit(function() {
        /* your code */
    });
});
于 2013-09-11T06:46:01.560 に答える
8

イベントリスナーをアタッチするとき、フォームの後にイベントリスナーをアタッチするコードを移動するか、コードを次のようにラップすると、フォームは定義されません。

jQuery(document).ready(function ($) {
    ...
});

そして、送信ボタンを追加します。

...
<input type="submit" value="submit">
...
于 2013-09-11T06:45:31.263 に答える