• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Value eines Hidden Inputs ändern

Hoffy1988

New member
Hi Leute ich bins mal wieder, und wahrscheinlich mal wieder mit einem billig Problem.
nur leider schaffe ich das als Anfänger von JQuery(2.1.3) nicht hinzubekommen.

Also folgendes:
ich habe ein Formular mit 6 Fragen und jede der 6 Fragen hat 6 Antworten wovon man nur 1 durch einen Radiobutton anklicken kann.

Dann habe ich einen Auswerten Button, der aus den Antworten (value) ein Bild erzeugt.
Das funzt auch alles wunderbar.

Jetzt möchte ich in einem 2. Formular die einzelnen Antworten übergeben.

Das wird eine Art Umfrage / Gewinnspiel.
ich hab das auch schon soweit zum laufen gebracht.
das einzige Problem:

jQuery übergibt mir die einzelnen Values nicht an ein input - hidden Feld.

hier mal eben der entsprechende code für die Funktionen die das betrifft:

Code:
var selectedVal1;
              var selectedVal2;
              var selectedVal3;
              var selectedVal4;
              var selectedVal5;
              var selectedVal6;
//            var ergebniskette = "'a_'+selectedVal1+', b_'+selectedVal2+', c_'+selectedVal3+', d_'+selectedVal4', e_'+selectedVal5', f_'+selectedVal6";
            
           $(document).ready(function() {

[...]
            
            $('#auswerten').click(function(){
                //var selectedVal1 = "";
                var selected1 = $("input[type='radio'][name='nameradio1']:checked");
                if (selected1.length > 0) {
                    selectedVal1 = selected1.val();
                }
                //var selectedVal2 = "";
                var selected2 = $("input[type='radio'][name='nameradio2']:checked");
                if (selected2.length > 0) {
                    selectedVal2 = selected2.val();
                }
                //var selectedVal3 = "";
                var selected3 = $("input[type='radio'][name='nameradio3']:checked");
                if (selected3.length > 0) {
                    selectedVal3 = selected3.val();
                }
                //var selectedVal4 = "";
                var selected4 = $("input[type='radio'][name='nameradio4']:checked");
                if (selected4.length > 0) {
                    selectedVal4 = selected4.val();
                }
                //var selectedVal5 = "";
                var selected5 = $("input[type='radio'][name='nameradio5']:checked");
                if (selected5.length > 0) {
                    selectedVal5 = selected5.val();
                }
                //var selectedVal6 = "";
                var selected6 = $("input[type='radio'][name='nameradio6']:checked");
                if (selected6.length > 0) {
                    selectedVal6 = selected6.val();
                }

[....]
                    
            });
             $('#sm3').click(function(){
                $('#gewinnspiel').toggleClass($('#gewinnspiel').data('classes'));
//                $('#antworten').attr('value', 'a_'+selectedVal1+', b_'+selectedVal2+', c_'+selectedVal3+', d_'+selectedVal4+', e_'+selectedVal5+', f_'+selectedVal6);
//                $('#antworten').attr('value', 'a_'+selectedVal1);
//                $('#antworten').attr('value','ergebniskette');
//                $('#antworten').val('a_'+selectedVal1+', b_'+selectedVal2+', c_'+selectedVal3+', d_'+selectedVal4+', e_'+selectedVal5+', f_'+selectedVal6);
//                $('input[id=antworten]').val('selectedVal1');
             });
           });
      </script>


damit will ich folgenden input bearbeiten:

Code:
        <input type="hidden" name="antworten" id="antworten">


Also das ganze script auch mit der Auswahl der Radiobuttons befindet sich in der selben HTML-datei, um keine Probleme mit der Datenübergabe zu haben.

Jetzt habe ich aber das problem die Radiobuttons liegen im Formular 1
das Input Feld "antworten" mit name email usw liegen in Formular 2

wenn ich bei Formular2 auf absenden drücke, bekomme ich alle Infos angezeigt, nur das entsprechende "antworten" Feld in der E-Mail bleibt leer.
die ganzen kommentierten Ansätze habe ich bereits erfolglos probiert...

ich hätte gerne, dass die ganzen ausgewählten radiobuttons in folgendem Format in der Email ausgegeben werden, weil diese dann später automatisiert ausgelesen werden sollen:

a_1, b_2, c_1 usw...
 
Moinsen,

also zunächst würde ich eine Schleife verwenden, um Deine :checked-Boxes abzuholen (ungetestet und hier im Editor entstanden - kein Anspruch auf Funktionalität):

Code:
for(var i = 1; i <= 6; i++){
    var _tmpSel = $("input[type='radio'][name='nameradio"+i+"']:checked");
    if(_tmpSel.length > 0){
        console.log(_tmpSel.val());
    }
}

Dann verstehe ich Dein Problem eigentlich nicht soooo ganz. Du kannst in Dein "hidden field" via val() natürlich auch reinschreiben - nicht nur auslesen.

Beim Absenden holst Du nicht nur eine Form, sondern beide! Legst diese also zusammen - achte nur drauf, dass die namentlich unterschiedlich sind. Heißt: Kein submit() aufs Form, sondern eine eigene Funktion, die vorher Daten sammelt - und wie Du das dann "benennst", ließe sich schööön mit einem {} realisieren, welches sich dann prima als JSON verschicken und serverseitig auch prima verarbeitet werden kann.

Habe ich jetzt irgendwo einen Denkfehler? ^^
 
SUPI danke für den Verbesserungsvorschlag für (D)eine Schleife

Mein Problem:
ich kenne mich noch nicht so gut mit javascript und auch jQuery aus ;)
ich stochere mehr im trüben, ich mein ich habe mir schon tutorials angeschaut und auch natürlich Dokumentationen,
aber ich komme halt einfach nicht so voran wie ich es gerne möchte ^^

Mein Problem ist folgendes:
Ich hätte gerne in der E-Mail die verschickt werden soll, alle Felder von Form1 und Form2 drin.
Ich mein ich habe schon einiges mit HTML und CSS gemacht, aber noch kaum was mit Javascript.

Ich habe doch die Values mit Hilfe der globalen Variablen zwischen gespeichert, warum noch eine Funktion dazu schreiben? Versteh ich nicht so ganz.

Mein Problem ist folgendes:
dass ich mit .val() eben NICHT die value schreiben kann...
bzw ich mehrere Versuche gestartet habe um eben die value zu schreiben, um diese mir später in der E-mail ausgeben zu lassen.
aber jedesmal, egal wie ich das auch geschrieben habe ob mit attr() da val() das Feld Antwort in der E-mail IMMER leer war

und da ich noch nicht so viel Erfahrung habe, weiß ich auch nicht wo der Fehler liegt, bzw warum das Feld antworten IN DER E-MAIL leer ist.
auch wenn ich nur per onclick dieses hier aufrufen lasse

Code:
$('#antworten').val('a');

an JSON habe ich auch schon gedacht,
aber wie schon gesagt, dazu fehlt mir leider noch die Erfahrung und will erstmal klein anfangen bevor ich gleich alle Möglichkeiten ausschöpfe.
Ich bin froh, dass überhaupt erstmal was bis hierhin funktioniert.
 
Ah, da fehlen also ein paar Basics ... hmmm ... fiddeln wir mal!

Dass Du mit val() prima reinschreiben kannst, siehst Du hier (dass die input-Box hidden ist, denkst Dir bitte selbst dazu ^^): jsfiddle

"globale Variablen" sind schlecht. Das hat - ganz einfach ausgedrückt - was mit Performance, Speicherverbrauch und selbiger Reservierung zu tun. Aber das ist für Dich als Anfänger jetzt mal total sekundär!

Sooo ... Du kannst Dir eigentlich - da es beides FORMS sind - mal Folgendes geben lassen:

Code:
$('form').each(function(){
   console.log( $( this ).serialize() );
});

Beachte hierzu die Entwicklerkonsole, die Du hoffentlich schon gefunden hast! Damit bekommst Du pauschal alles, was in den beiden Forms steht - gefühlt bekommst Du mind. zwei Konsoleneinträge. ;)

Im Trüben fischen? Da gibbet doch bestimmt Moskitos mit ihrer "all you can eat"-Einstellung, oder? Brrrr ... schnell weg. :D
 
Zuletzt bearbeitet:
Oh gestern noch vergessen zu schreiben.
ich habe meinen Fehler bereits gefunden.

Es lag daran, dass ich 2 Forms hatte
und das erste Form bereits mit einem <Button> beendet hatte...

jetzt habe ich einen <anchor> draus gemacht und es funzt einwandfrei
lag also nicht an jQuery sondern an mir, und meinen form-denkfehler ^^
 
Zurück
Oben