jQuery mehrere select change verarbeiten und ausgeben

Maniac

Erfahrenes Mitglied
Hi,

Ich habe eine Form wo 6 Select's sind, dieses Selects möchte ich nachdem sie ausgewählt wurden verarbeiten. Einzeln bekomm ich das schon hin, nur eben das sie nacheinander ausgewählt und dann in ein Div geschrieben werden.
Dieses Selects sollen eine Datumsauswahl sein:

Startdatum: Tag - Monat - Jahr
Enddatum: Tag - Monat - Jahr

Ich möchte die Differenztage berechnen, dies mach ich mit einer PHP-Funktion, also jetzt erstmal uninteressant.

Nach dem auswählen des Starttages/Monat/Jahr und das gleiche beim Enddatum möchte das die Werte aus den Options zu nem Datum formiert werden. ist ja auch kein Problem als String definieren. Nur das zusammensetzen macht mir Probleme.

Hier mein Code für die einzelnen Felder:
Code:
$(document).ready(
      	function(){
              $("#startday").change(
            	function(){
            		var startday = $(this).val();            					
            	}
            );
            $("#startmonth").change(
            	function(){
            		var startmonth = $(this).val();       					
            	}
            );
            $("#startyear").change(
            	function(){
            		var startyear = $(this).val();				
            	}
            );
            $("#endday").change(
            	function(){
            		var endday = $(this).val();
            					
            	}
            );
            $("#endmonth").change(
            	function(){
            		var endmonth = $(this).val();				
            	}
            );
            $("#endyear").change(
            	function(){
            		var endyear = $(this).val();					
            	}
            );
            var start = startday+"."+startmonth+"."+startyear;
            var end = endday+"."+endmonth+"."+endyear;
            
            $("#daysBetween").html(start);
        }   	
);
 
1. Dein script wird nur beim document.ready event ausgeführt und danach nie wieder. Was bedeutet das #daysBetween nie aktualisiert wird.
2. var start und var end setzt du aus variablen zusammen die garnicht existieren. Du erstellst die variablen (startday,startmonth...) erst beim jeweiligen change event ( und das auch noch im falschen scope ).
 
2. var start und var end setzt du aus variablen zusammen die garnicht existieren. Du erstellst die variablen (startday,startmonth...) erst beim jeweiligen change event ( und das auch noch im falschen scope ).

Ich hatte es auch schon versucht wenn ich die Vars vorher deklariert hatte.
Wie meinst Du das im falschen Scope?

Könntes Du mir vielleicht ein Beispiel geben?
 
Könntes Du mir vielleicht ein Beispiel geben?
Natürlich :). Es ginge zwar auch schöner aber so ist es denke ich am leichtesten nachvollziehbar.
Javascript:
function updateDaysBetween(){
    var startday = $('#startday').val();
    var startmonth = $('#startmonth').val();
    var startyear = $('#startyear').val();
    var endday = $('#endday').val();
    var endmonth = $('#endmonth').val();
    var endyear = $('#endyear').val();
    
    var start = startday+"."+startmonth+"."+startyear;
    var end = endday+"."+endmonth+"."+endyear;
            
    $("#daysBetween").html(start);

}

$('#startday,#startmonth,#startyear,#endday,#endmonth,#endyear').change(function(){
   updateDaysBetween();
});
 
Danke für dein Beispiel, habe es eben mal 1:1 übernommen und festgestellt das es gar nichts ausgibt.
Bedeutet
Code:
$("#startday,#startmonth,#startyear,#endday,#endmonth,#endyear").change(function(){
   		updateDaysBetween();
	});
wenn ALLE selects gechanged sind, führe die Funktion aus? Oder bedeutet das führe jedesmal die Funktion aus nachdem ein Feld selectiert wurde?
 
Das bedeutet nicht anderes als
Javascript:
$("#startday").change(function(){
 updateDaysBetween();
});
$("#startmonth").change(function(){
 updateDaysBetween();
});
usw.

Wenn du diese Zeilen
Javascript:
$("#startday,#startmonth,#startyear,#endday,#endmonth,#endyear").change(function(){
        updateDaysBetween();
    });
im Head-Bereich stehen hast, musst du es noch in ein document.ready kapseln weil js sonst versucht die function an Elemente zu binden die zu diesem Zeitpunkt noch nicht existieren.
 
Jepp, danke so funktioniet es :-)
Dachte nur aus dem vorherigen Post das ich document.ready weglassen soll.
 
Naja aus performance Gründen sollte man javascripts die nicht im Head-Bereich sein müssen ganz ans Ende ( vor </body> ) schieben. Dann kann man sich auch das document.ready sparen.
 

Neue Beiträge

Zurück