# Funktion um Arbeitstage zu erfassen



## Pol (30. Januar 2013)

Hallo 
Ich möchte die unten stehende Funktion für die folgende Anforderung anpassen. Wie soll ich vorgehen?
Ich habe dynamische Zeilen (standardmässig 5) kann der User aber dynamisch beliebig viele hinzufügen:

Zeile1: 05.01.2012 08:30 (Manually entered)
Zeile2: 06.01.2012 08:30
Zeile3: 07.01.2012 08:30
Zeile4: 12.02.2012 10:15  (Manaully entered)
Zeile5: 13.02.2012 10:15 

Die Zeile2 soll den Inhalt der Zeile1 (DateTime) mit +1 (nächste Arbeitstag weekday) füllen. 
Wenn der User z.B. die Zeile4 Manuall ändert dann sollen die alle Zeilen ab Zeile4 wieder mit nächsten Arbeitstag erfüllt werden. Die Funktion wird mit Onchange aufgerufen. 
Kann ich sowas mit Javascript realisieren? Wo finde ich ähnliche Informationen? 

Danke

Beispiel Funktion:
function datumgrid() {    

var anzahl=parseInt(document.getElementById("key_count").value);

for (var i=0; i<=anzahl; i++){
var zeilegibtes= document.getElementById("x" + i + "_Stunden"); 
if(zeilegibtes){                                

document.getElementById("x" + i + "_Stunden").value  = document.getElementById("x" + i + "_Stunden").value +i; 
}               
}
}


----------



## ikosaeder (30. Januar 2013)

Im Netz gibt es mehrere Anleitungen, wie man einen Kalender in Javascript macht. Da sind viele Funktionen drin, die du auch brauchen wirst. 
Z.B. hier
http://de.selfhtml.org/javascript/beispiele/monatskalender.htm


----------



## Yaslaw (31. Januar 2013)

Es ist ja kein Kalender.

Hier eine Möglichkeit mit jQuery. Für die Text-Datum Konvertierung habe ich das Script von  Matt Kruse verwendet
http://www.mattkruse.com/javascript/date/


```
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<!-- jQuery einbinden -->
<script type="text/javascript" src="jquery/jquery-1.7.2.min.js" ></script>
<!-- Datumsfunktion einbinden (Text -> Datum -> Text) -->
<!-- http://www.mattkruse.com/javascript/date/ -->
<script type="text/javascript" src="date.js" ></script>
<script>

$(function(){
	//Ausführen qwenn ein Datum gesetzt wird
	$('input.myDateField').change(function(){
		//Prüfen obs ein gültiger
		if(!isDate($(this).val(), 'd.M.y')){
			alert($(this).val() + ' is no date');
		}else{
			//Datum auslesen
		    var dat = new Date(getDateFromFormat($(this).val(), 'd.M.y'));
		    //In allen folgezeilen den code ausführen
		    $(this).parent('td').parent('tr').nextAll().each(function(){
		    	//Datum + 1 Tag
		    	dat.setDate(dat.getDate()+1);
		    	//und in die Input-box eintragen
				$(this).children('td').children('input.myDateField').val(formatDate(dat, 'dd.MM.y'));
			});
		}
	});
});
    

</script>

<table>
    <tr>
        <td><span class="id">1</span></td>
        <td><input type="text" class="myDateField" /></td>
    </tr>
    <tr>
        <td><span class="id">2</span></td>
        <td><input type="text" class="myDateField" /></td>
    </tr>
    <tr>
        <td><span class="id">3</span></td>
        <td><input type="text" class="myDateField" /></td>
    </tr>
    <tr>
        <td><span class="id">4</span></td>
        <td><input type="text" class="myDateField" /></td>
    </tr>
    <tr>
        <td><span class="id">5</span></td>
        <td><input type="text" class="myDateField" /></td>
    </tr>
    <tr>
        <td><span class="id">6</span></td>
        <td><input type="text" class="myDateField" /></td>
    </tr>
</table>

</body>
</html>
```


----------



## ikosaeder (31. Januar 2013)

@Yaslaw:
Schon klar, das es kein Kalender ist, aber ich hatte ihn so verstanden, das nur Werktage da eingetragen werden. Und dann benötigt er Funktionen, die auch in einem Kalender sind (Tage des Monats, Aus einem Datum einen Wochentag auslesen u.ä.)
Das was du gepostet hast ist trotzdem Klasse und notwendig hier.


----------

