3 Stimmen

Holen Sie den versteckten Zeileninhalt aus der Datentabelle und übermitteln Sie ihn zusammen mit dem Formular.

Ich stecke fest mit einem Problem und es kostet mir jetzt Zeit. Ich habe eine Tabelle mit 7 Datensätzen (zum Beispiel) und diese Tabelle enthält Eingabe- und Textbereiche, in die ein Benutzer eingeben kann. Jetzt, bei der Seitenumbruch mit dem Wert von 5 Datensätzen pro Seite, habe ich zwei Seiten. Der Benutzer gibt Daten in den Kommentarbereich ein, klickt auf "nächste" im Seitenwechsel und gibt Wert im Kommentarbereich ein. Technisch gesehen hat der Benutzer Werte in beide Seiten eingegeben, wie vom Datentabellen-Seitenwechsel-Logik aufgeteilt. Das Problem ist, wenn der Benutzer auf "speichern" klickt, werden nur die Elemente gespeichert, die im Fokus sind, einfacher zu verstehen, die sichtbar auf der Seite sind. Ich habe die API und FAQs gelesen, und es ist klar, dass die Datentabelle die Elemente verbirgt, die nicht im Fokus sind, was sie praktisch unmöglich macht, im DOM zu finden. Unten ist der Code und ich brauche Hilfe, wie ich die Daten aus den verborgenen Zeilen mit der Methode fnGetHiddenTrNodes() erhalten und verborgene Elemente erstellen und sie an die vorhandenen sichtbaren Tabellenelemente anhängen kann, bevor das Formular abgeschickt wird. Ich habe den folgenden Code versucht, aber es funktioniert nicht.

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

           var nNodes = oTable.fnGetHiddenTrNodes();
           for ( var i=0 ; i

`

Jede Hilfe wird sehr geschätzt.

`

2voto

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

       //Schleife durch die TR-Datensätze
       oTable.$("tr").each(function(index, nRow){
            //Wählen Sie das Eingabefeld aus der Zeile aus
            //var rowInput = $("input", nRow);
            //Wählen Sie das Textfeld aus der Zeile aus
            //var rowTextarea = $("textarea", nRow);

            //Zum Formular hinzufügen
            var nHidden = document.createElement( 'input' );
            nHidden.type = 'hidden';
            nHidden.name = "hidden_input_"+index;

            //Vorausgesetzt, es gibt eine Eingabe pro Zeile
            nHidden.value = $("input", nRow).val();
            //alert(nHidden.value);
            $("#form").append( nHidden );
        });

        $("#form").submit();         
    }else {
        validator.focusInvalid();
        return false; 
    }    
});

1voto

Sirish Punkte 877

Okay.! Zeit zum Abschluss. Vielen Dank an @Bret, der mir dabei geholfen hat. Hier ist der Code-Ausschnitt, der endlich funktioniert -

      $("#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;
        }

    });  

Vielen Dank.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X