1

jquery を使用して、ページを更新せずに main.php ファイルの div コンテンツを変更していますが、ここでの問題は、読み込まれた新しい div にフォームが含まれており、フォーム アクションでフォームを同じページに送信することです。 (div) ですが、必要のない main.php にリダイレクトされます。同じdivで同じページにとどまるために、アクションにどのような変更を加える必要がありますか。

これは、div を動的に変更するために使用するコードです。

main.php:

<li id="nav-home"><a class="button" href="main.php">Home</a></li>
<li id="nav-page1"><a class="button" href="page1.php">Page1</a></li>    
<li id="nav-page2"><a class="button" href="page2.php">Page2</a></li>
<li id="nav-page3"><a class="button" href="page3.php">Page3</a></li>

<script>
    $(function(){
        $('.button').on('click', function(e){
            e.preventDefault();
            $('#content').load($(this).attr('href'));
        });
    })
</script>

例: main.php の Page1 をクリックすると、div コンテンツが page1 に置き換えられます。ここで、page1 にはフォームがあり、フォームを送信すると、同じページに留まりたいと思います。

これは、page1 のフォームを処理するコードです。

<form name="form" id="form" method="POST" action=""> //my form elements </form>

    <script type="text/javascript">
        $(document).ready(function(){
            $("#form").validate({
                debug: false,
                rules: {

                    //rules
                },
                messages: {

                    //messages
                },
                submitHandler: function(form) {
                    // do other stuff for a valid form
                    $.post('scripts/formhandler.php', $("#form").serialize(), function(data) {
                        $('#results').html(data);
                    });
                }
            });
    });
    </script>
4

2 に答える 2

0

検証プラグインを使用しているようで、ajaxSubmit基本的に送信呼び出しを preventDefault でラップし、すべてのフォームのシリアル化などを処理するメソッドを使用できます。

http://docs.jquery.com/Plugins/Validation/validate

すなわち

submitHandler: function(form) {
  $(form).ajaxSubmit();
}
于 2012-09-09T10:02:46.630 に答える
0

form.submit 関数を使用して、ajax を使用して送信を処理できます。

$('#form_id').submit(function() 
{
     e.preventDefault(); // Prevent the default form action 

     /*now add ajax code here to do form submit*/
});

もちろん、ページが既に読み込まれた後にフォームを読み込む場合は、上記のコードの代わりに jquery.live または jquery.on 関数を使用してフォーム ハンドラーを設定する必要があります。例:

$('#form_id').on('submit', function()
{
    // Code in here
});

jquery サイトから .live と .on の詳細を読むことができます

于 2012-09-09T09:42:19.643 に答える