2

私はデータテーブルと、送信時にデータをフォームに正しくプッシュバックするために何をすべきかについて苦労してきましfnGetNodesた。

jqueryが正しく機能しています。ドキュメントで説明されているように、選択した値を確認できます。sData私の質問は、それをPOSTでサーバーに戻すにはどうすればよいですか?

シンプルなはずなのに、明らかに木に集中しすぎて森が見えない…。助けていただければ幸いです!

<script style="text/javascript">

    $(document).ready(function() {
        $('#form').submit( function() {
            var sData = $('input', oTable.fnGetNodes()).serialize();
            alert( "The following data would have been submitted to the server: \n\n"+sData );
            return false;
        });

        oTable = $('#data_table').dataTable();
    });
</script>

私のHTMLフォームは次のようになります(わかりやすくするために短縮)

<table id="data_table">
            <thead>
                <tr>
                    <th>Select</th>
                    <th>Question</th>
                </tr>
            </thead>
            <tr id=0><td><label for="id_questions_0"><input type="checkbox" name="questions" value="103" id="id_questions_0" /></label></td><td>D1. Example of a multiple choice question</td></tr>
<tr id=1><td><label for="id_questions_1"><input type="checkbox" name="questions" value="104" id="id_questions_1" /></label></td><td>E1. Example of a multiple choice question</td></tr>
<tr id=2><td><label for="id_questions_2"><input type="checkbox" name="questions" value="105" id="id_questions_2" /></label></td><td>G. Example of a multiple choice question</td></tr>
<tr id=3><td><label for="id_questions_3"><input type="checkbox" name="questions" value="106" id="id_questions_3" /></label></td><td>H. Example of a multiple choice question</td></tr>

編集

アラートは私にこれを示しています。 questions=103&questions=104&questions=105&questions=106&questions=100&questions=101&questions=102

そして、POST(開発ツールの使用)は私にこれを示しています。

csrfmiddlewaretoken:a2c3ed6e1bfee9fce0b7412553aa2080
name:Phase-1 Pre-Drywall
priority:1
description:Pre-Drywall inspection items
use_for_confirmed_rating:on
use_for_sampling:on
data_table_length:10
questions:103
questions:104
questions:105
questions:106
submit:Submit

だからどういうわけか私はjqueryを使用して前者を後者に変換する必要があります誰かがこれで私を助けることができますか

ありがとう

4

1 に答える 1

3

答えは(予想通り)非常に単純であることが判明しました。

        var oTable = $('#data_table').dataTable();
        // This will collect all of the nodes which were checked and make sure they get
        // pushed back.
        $('#form').submit(function () {
            $("input[name='question']").remove();  //Remove the old values
            $("input:checked", oTable.fnGetNodes()).each(function(){
                $('<input type="checkbox" name="questions" ' + 'value="' +
                  $(this).val() + '" type="hidden" checked="checked" />')
                    .css("display", "none")
                    .appendTo('#form');
            });
        });
于 2012-05-08T20:15:06.157 に答える