3

私は問題に悩まされており、それが今私の時間を食いつぶしています。たとえば、7つのレコードを持つテーブルがあり、このテーブルには、ユーザーが入力できるinput要素とtextarea要素があります。1ページあたり5レコードの値を持つページ付けにより、2つのページがあります。ユーザーはコメントセクションにデータを入力し、ページネーションの「次へ」をクリックして、コメントセクションに値を入力します。したがって、技術的には、ユーザーはデータテーブルのページネーションロジックによって分割された値を両方のページに入力しました。問題は、ユーザーが保存を押すと、フォーカスされている要素のみが保存され、ページに表示されている要素がより理解しやすくなることです。APIとFAQを読みましたが、datatableがフォーカスされていない要素を隠しているため、DOMで見つけることが事実上不可能になっていることは明らかです。以下はコードです。フォームを送信する前に、fnGetHiddenTrNodes()メソッドを使用して非表示の行からデータを取得し、非表示の要素を作成して既存の表示可能なテーブル要素に追加する方法についてサポートが必要です。以下のコードを試しましたが、機能しません。

    $("#form").on("submit",function(){
       if($("#form").valid()){

           var nNodes = oTable.fnGetHiddenTrNodes();
           for ( var i=0 ; i<nNodes.length ; i++ )
           {
               var nHidden = document.createElement( 'input' );
               nHidden.type = 'hidden';
               nHidden.name = "hidden_input_"+i;
               nHidden.value = $('input', nNodes).val();

               //alert(nHidden.value);
               this.appendChild( nHidden );
           }

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


       }else {
           validator.focusInvalid();
           return false;
       }

   });

どんな助けでも大歓迎です。

4

2 に答える 2

2
$("#form").on("submit",function(){
    if($("#form").valid()){

       //Loop through the TR records
       oTable.$("tr").each(function(index, nRow){
            //Select the input from the row
            //var rowInput = $("input", nRow);
            //Select the text area from the row
            //var rowTextarea = $("textarea", nRow);

            //Add to form
            var nHidden = document.createElement( 'input' );
            nHidden.type = 'hidden';
            nHidden.name = "hidden_input_"+index;

            //Assuming there is one input per row
            nHidden.value = $("input", nRow).val();
            //alert(nHidden.value);
            $("#form").append( nHidden );
        });

        $("#form").submit();         
    }else {
        validator.focusInvalid();
        return false; 
    }    
});
于 2013-03-21T18:54:33.500 に答える
1

大丈夫。!まとめる時間です。方向性を教えてくれた@Bretに感謝します。以下は、最終的に機能するコードスニペットです-

      $("#form").on("submit",function(){
        if($("#form").valid()){

            var nNodes = oTable.fnGetHiddenTrNodes();

                    $('td', nNodes).each(function(index,ncolumn) {

                        var nHidden = document.createElement( 'input' );
                        nHidden.type = 'hidden';
                        nHidden.name = $("input", ncolumn).attr("name");
                        nHidden.value = $("input", ncolumn).val();

                        if(typeof(nHidden.name)  != "undefined")
                        $("#form").append( nHidden );

                        nHidden = document.createElement( 'input' );
                        nHidden.type = 'hidden';
                        nHidden.name = $("textarea", ncolumn).attr("name");
                        nHidden.value = $("textarea", ncolumn).val();

                        if(typeof(nHidden.name)  != "undefined")
                        $("#form").append( nHidden );

                        nHidden = document.createElement( 'input' );
                        nHidden.type = 'hidden';
                        nHidden.name = $("textarea", ncolumn).attr("name");
                        nHidden.value = $("textarea", ncolumn).val();

                        if(typeof(nHidden.name)  != "undefined")
                        $("#form").append( nHidden );

                        nHidden = document.createElement( 'input' );
                        nHidden.type = 'hidden';
                        nHidden.name = $("select", ncolumn).attr("name");
                        nHidden.value = $("select", ncolumn).attr("value");

                        if(typeof(nHidden.name)  != "undefined")
                        $("#form").append( nHidden );

                    });

            clickedSave = true;


        }else {
            validator.focusInvalid();
            return false;
        }

    });  

ありがとう。

于 2013-03-21T20:45:29.050 に答える