Herbert1204: zwei Datum

Hallo

Ich habe hier ein Script mit zwei Daten (oder Datums ?). Bei beiden ist das jeweilige Tagesdatum in einem Textfeld. Außerdem kann kein Datum aus der Vergangenheit aufgerufen werden. Soweit so gut.

Jetzt möchte ich, dass das zweite Datum immer gleich oder höher ist als das erste Datum. Das bedeutet, wenn das erste Datum ausgewählt ist, können beim zweiten Datum alle vorherigen Tage im Kalender nicht ausgewählt werden. Oder, wenn das zweite Datum ausgewählt ist, können beim ersten Datum nur jüngere Tage ausgewählt werden.

Ich hoffe ich habe mich verständlich ausgedrückt.

Kann mir jemand das Script nach meinen Wünschen ändern?

Im Voraus schon einmal Vielen Dank!!

<head> <script language="JavaScript" type="text/javascript">

// User Changeable Vars var HighlightToday  = true;    // use true or false to have the current day highlighted var DisablePast    = true;    // use true or false to allow past dates to be selectable // The month names in your native language can be substituted below var MonthNames = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");

// Global Vars var now = new Date(); var dest = null; var ny = now.getFullYear(); // Today's Date var nm = now.getMonth(); var nd = now.getDate(); var sy = 0; // currently Selected date var sm = 0; var sd = 0; var y = now.getFullYear(); // Working Date var m = now.getMonth(); var d = now.getDate(); var l = 0; var t = 0; var MonthLengths = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

/*   Function: GetDate(control)

Arguments:     control = ID of destination control */ function GetDate() {   EnsureCalendarExists();   DestroyCalendar();   // One arguments is required, the rest are optional   // First arguments must be the ID of the destination control   if(arguments[0] == null || arguments[0] == "") {     // arguments not defined, so display error and quit     alert("ERROR: Destination control required in funciton call GetDate()");     return;   } else {     // copy argument     dest = arguments[0];   }   y = now.getFullYear();   m = now.getMonth();   d = now.getDate();   sm = 0;   sd = 0;   sy = 0;   var cdval = dest.value;   if(/d{1,2}.d{1,2}.d{4}/.test(dest.value)) {     // element contains a date, so set the shown date     var vParts = cdval.split("/"); // assume dd/mm/yyyy     sm = vParts[0] - 1;     sd = vParts[1];     sy = vParts[2];     m=sm;     d=sd;     y=sy;   }

//  l = dest.offsetLeft; // + dest.offsetWidth; //  t = dest.offsetTop - 125;   // Calendar is displayed 125 pixels above the destination element //  if(t<0) { t=0; }      // or (somewhat) over top of it. ;)

/* Calendar is displayed 125 pixels above the destination element   or (somewhat) over top of it. ;)*/   l = dest.offsetLeft + dest.offsetParent.offsetLeft + 330;   t = dest.offsetTop + 0;   if(t < 0) t = 0; // >   DrawCalendar(); }

/*   function DestoryCalendar()

Purpose: Destory any already drawn calendar so a new one can be drawn */ function DestroyCalendar() {   var cal = document.getElementById("dpCalendar");   if(cal != null) {     cal.innerHTML = null;     cal.style.display = "none";   }   return }

function DrawCalendar() {   DestroyCalendar();   cal = document.getElementById("dpCalendar");   cal.style.left = l + "px";   cal.style.top = t + "px";

var sCal = "<table><tr><td class="cellButton"><a href="javascript: PrevMonth();" title="Previous Month">&lt;&lt;</a></td>"+     "<td class="cellMonth" width="80%" colspan="5">"+MonthNames[m]+" "+y+"</td>"+     "<td class="cellButton"><a href="javascript: NextMonth();" title="Next Month">&gt;&gt;</a></td></tr>"+     "<tr><td>So</td><td>Mo</td><td>Di</td><td>Mi</td><td>Do</td><td>Fr</td><td>Sa</td></tr>";   var wDay = 1;   var wDate = new Date(y,m,wDay);   if(isLeapYear(wDate)) {     MonthLengths[1] = 29;   } else {     MonthLengths[1] = 28;   }   var dayclass = "";   var isToday = false;   for(var r=1; r<7; r++) {     sCal = sCal + "<tr>";     for(var c=0; c<7; c++) {       var wDate = new Date(y,m,wDay);       if(wDate.getDay() == c && wDay<=MonthLengths[m]) {         if(wDate.getDate()==sd && wDate.getMonth()==sm && wDate.getFullYear()==sy) {           dayclass = "cellSelected";           isToday = true;  // only matters if the selected day IS today, otherwise ignored.         } else if(wDate.getDate()==nd && wDate.getMonth()==nm && wDate.getFullYear()==ny && HighlightToday) {           dayclass = "cellToday";           isToday = true;         } else {           dayclass = "cellDay";           isToday = false;         }         if(((now > wDate) && !DisablePast) || (now <= wDate) || isToday) { // >           // user wants past dates selectable           sCal = sCal + "<td class=""+dayclass+""><a href="javascript: ReturnDay("+wDay+");">"+wDay+"</a></td>";         } else {           // user wants past dates to be read only           sCal = sCal + "<td class=""+dayclass+"">"+wDay+"</td>";         }         wDay++;       } else {         sCal = sCal + "<td class="unused"></td>";       }     }     sCal = sCal + "</tr>";   }   sCal = sCal + "<tr><td colspan="4" class="unused"></td><td colspan="3" class="cellCancel"><a href="javascript: DestroyCalendar();">Cancel</a></td></tr></table>"   cal.innerHTML = sCal; // works in FireFox, opera   cal.style.display = "inline"; }

function PrevMonth() {   m--;   if(m==-1) {     m = 11;     y--;   }   DrawCalendar(); }

function NextMonth() {   m++;   if(m==12) {     m = 0;     y++;   }   DrawCalendar(); }

function ReturnDay(day) {   cDest = document.getElementById(dest);   dest.value = day+". "+MonthNames[m]+" "+y;

DestroyCalendar(); }

function EnsureCalendarExists() {   if(document.getElementById("dpCalendar") == null) {     var eCalendar = document.createElement("div");     eCalendar.setAttribute("id", "dpCalendar");     document.body.appendChild(eCalendar);   } }

function isLeapYear(dTest) {   var y = dTest.getYear();   var bReturn = false;

if(y % 4 == 0) {     if(y % 100 != 0) {       bReturn = true;     } else {       if (y % 400 == 0) {         bReturn = true;       }     }   }

return bReturn; }

</script>

<style type="text/css">

/* The containing DIV element for the Calendar / #dpCalendar {   display: none;          / Important, do not change /   position: absolute      / Important, do not change /   background-color: #cccccc;   color: #000000;   font-size: xx-small;   font-family: Corbel, Geneva, Arial, Helvetica, sans-serif;   width: 150px; } / The table of the Calendar / #dpCalendar table {   border: 1px solid white;   background-color: #eeeeee;   color: #000000;   font-size: x-small;   font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;   width: 100%; } / The Next/Previous buttons / #dpCalendar .cellButton {   background-color: #cccccc;   color: black; } / The Month/Year title cell / #dpCalendar .cellMonth {   background-color: #cccccc;   color: #000000;   text-align: center; } / Any regular day of the month cell / #dpCalendar .cellDay {   background-color: #cccccc;   color: #000000;   text-align: center; } / The day of the month cell that is selected / #dpCalendar .cellSelected {   border: 1px solid red;   background-color: #cccccc;   color: #cccccc;   text-align: center; } / The day of the month cell that is Today / #dpCalendar .cellToday {   background-color: #ffffff;   color: #666666;   text-align: center; } / Any cell in a month that is unused (ie: Not a Day in that month) / #dpCalendar .unused {   background-color: #cccccc;   color: green; } / The cancel button / #dpCalendar .cellCancel {   background-color: #cccccc;   color: black;   border: 1px solid #000000;   text-align: center; } / The clickable text inside the calendar */ #dpCalendar a {   text-decoration: none;   background-color: cccccc;   color: #000000; }   </style>

<script language="JavaScript">

function mail( form ) {         return true; } </script>

</head>

<form name="form">

<table>     <tr>         <td>

<input type="text" readonly name="ersterTag" style="font-weight:bold; font-size:11pt; text-align:center; width:150px;"><br> <input type="button" onClick="GetDate(ersterTag);" value="Datum ändern" style="font-weight:bold; font-size:11pt; width:110px">

<script type="text/javascript"> function zeit() { var monate = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]; var heute = new Date(); var jahr = heute.getYear(); var monat = heute.getMonth(); var tag = heute.getDate(); document.form.ersterTag.value=tag+". "+(monate[monat])+" "+jahr; } zeit(); </script>

</td>         <td width="75">

<input type="text" readonly name="letzterTag" style="font-weight:bold; font-size:11pt; text-align:center; width:150px;"><br> <input type="button" onClick="GetDate(letzterTag);" value="Datum ändern" style="font-weight:bold; font-size:11pt; width:110px">

<script type="text/javascript"> function zeit() { var monate = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]; var heute = new Date(); var jahr = heute.getYear()+1; var monat = heute.getMonth(); var tag = heute.getDate(); document.form.letzterTag.value=tag+". "+(monate[monat])+" "+jahr; } zeit(); </script>

</td>     </tr> </table>

</form>

  1. Ich hoffe ich habe mich verständlich ausgedrückt.

    Nicht ganz ;-)

    Außerdem kann kein Datum aus der Vergangenheit aufgerufen werden.

    Datum aufrufen heißt?

    Jetzt möchte ich, dass das zweite Datum immer gleich oder höher ist als das erste Datum.

    Also serverseitig prüfen und dann bei Bedarf dem User nochmal vorsetzen, mit der Bitte um Korrektur?

  2. Kann mir jemand das Script nach meinen Wünschen ändern?

    Das können sicher einige, ist 'ne Frage des Preises.

    Ansonsten würde ich den ganzen Wust zusammenkürzen.
    Verwende doch einfach zwei input-Elemente vom type "date" und setze die Attribute "min" bzw. "max" wenn das jeweils andere verändert wurde (onInput).
    Hier gibt's die nötigen Informationen

    --
    sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
  3. @@Herbert1204:

    nuqneH

    Ich habe hier ein Script mit zwei Daten (oder Datums ?).

    Datümer.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hi,

      Ich habe hier ein Script mit zwei Daten (oder Datums ?).

      Datümer.

      mal andersrum gedacht: wie ist denn die Einzahl von Daten?

      Ein ehemaliger Kollege sprach immer von "einer Date" ...

      Schönen Sonntag noch!
      O'Brien

      --
      Frank und Buster: "Heya, wir sind hier um zu helfen!"
      1. Hallo,

        mal andersrum gedacht: wie ist denn die Einzahl von Daten?
        Ein ehemaliger Kollege sprach immer von "einer Date" ...

        ohje, dann schon eher von "einem Date". :-)

        So long,
         Martin

        --
        Idealismus wächst mit der Entfernung zum Problem.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. mal andersrum gedacht: wie ist denn die Einzahl von Daten?

          Tatsächlich spricht man von "einem Datum".
          "In dem Datensatz gibt es eine ganze Reihe benuterbezogene Daten, unter anderem repräsentiert ein Datum seinen Namen"
          Um Verwirrungen zu vermeiden klärt man bei erstmaliger Benutzung des Begriffs in einem Gespräch was man meint und danach sollte der Empfänger in der Lage sein das zu verstehen.

          Also in allen Fällen, egal ob man einen bestimmten Tag meint oder ein paar Bit die zusammen eine Information ergeben gilt im Deutschen:
          Datum => Daten
          im Lateinischen natürlich datum => data

          Und Martin hat auch Recht, wenn er sagt es hieße "das date", "Datum" ist auch in allen Fällen neutral :) sogar im Tschechischen (zufällig drauf gestoßen ^^) da gibt es aber wohl einen schleichenden Wandel zum Maskulinum.

          --
          sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(