0

jquery初心者です。[保存] ボタンと [保存して終了] ボタンを備えた単純なフォームを作成するにはどうすればよいですか?

私が今持っているものは、ある意味で「機能」します。しかし、投稿したら、保存して終了をクリックします。その後、/messages に戻ります。フォームを使用し、保存して終了をクリックすると、投稿され、ページにとどまります。しかし、私が繰り返すと、投稿して終了します。

Jクエリ

var BASE = 'http://localhost/sym/messages';

$('#xhrSave').submit(function() {

    event.preventDefault();

    $('[name="save_continue"]').click(function() {
        window.location = '#';
    });

    $('[name="save_exit"]').click(function() {
        window.location = BASE;
    });

    var url = $(this).attr('action');
    var data = $(this).serialize();

    $.ajax({
        type: 'post',
        url: url,
        dataType: 'json',
        data: data,
        success: function(data) {

            $('#message_list').append('<div>' + data.message + '<a class="delete" rel="'+ data.id +'" href="#">Delete</a></div>');

        }

    });

    // clear textbox
    $('#form_message').val('');

});

HTML

<form action="<?=URL::to('messages/xhrSave')?>" method="post" id="xhrSave">

<input type="text" name="message" value="" id="form_message" />

<button type="submit" name="save_continue" class="save_form">Save</button>
<button type="submit" name="save_exit" class="save_form">Save-Exit</button>

4

1 に答える 1

1

このことを行うには多くの方法がありますが、どれも最善とは言えません。私が一般的に使用する方法を示しています。

html を次のように変更します。

<input type="text" name="message" value="" id="form_message" />

<button type="submit" name="save_continue" class="save_continue save_form">Save</button>
<button type="submit" name="save_exit" class="save_exit save_form">Save-Exit</button>

そしてjs:

function myajaxcall(type){
                     var url = $(this).attr('action');
        var data = $(this).serialize();

        $.ajax({
            type: 'post',
            url: url,
            dataType: 'json',
            data: data,
            success: function(data) {

                $('#message_list').append('<div>' + data.message + '<a class="delete" rel="'+ data.id +'" href="#">Delete</a></div>');
                //one way to redirect
               if(type=="exit")
               window.location = "thepageyouwanttogo.php"

            }

        });
}
$('.save_continue').click(function() {
        myajaxcall("continue")
});
$('.save_exit').click(function() {
        myajaxcall("exit")
});

注:質問のためにコピーしたばかりのajaxであなたのjsをチェックしていません

于 2012-10-27T19:14:52.993 に答える