2016-07-24 17 views
0

ich in Javascript nicht so gut bin - aber ich versuche dies:JQuery Datepicker/Datetime - Wie MaxDate in Java einzustellen gemäß einer ausgewählten Option

ich eine Liste von Ereignissen hatte, in dem der Benutzer "Programm zum Schließen" des Ereignisses in einem zukünftigen Datum.

aber dieses zukünftige Datum kann nicht nach dem Ereignis sein.

Dann muss ich ein Maxdate für jedes Ereignis festlegen.

Ich bin mit JQuery Datepicker - und die MaxDate ich dies tun setzen:

$('#closeevent').datetimepicker({ 
    minDate: 0, 
    maxDate: new Date(2016, 8, 15, 8, 0) 
}); 

MaxDate = 2016/8/15 08:00

Mein Problem:

Wie kann ich Ändern Sie "2016, 8, 15, 8, 0" (maxDate-Wert) onKlicken Sie für jedes Ereignis auf eine Schaltfläche (weil jedes Ereignis ein anderes maxDate aufweist.

Ereignis 1 ... maxDate (2016, 9, 10, 8 , 0) .... [Taste onCl ick: ..] ereignis 2 ... maxDate (2016, 10, 22, 10, 30) .... [button onClick: ..]

Wenn ich auf Button für event1 klicke - ändert sich das maxDate auf 2016 , 9, 10, 8, 0 ..

Wenn ich Taste für event2 klicken - die MaxDate Änderung bis 2016, 10, 22, 10, 30 ..

tks viele

+1

Sie sind nicht jQuery Datepicker verwenden oder Ihr Code würde sagen, 'datepicker' statt' datetimepicker'. – BobRodes

+0

@BobRodes tks viel für Ihre Beobachtung! Ich korrigiere den Titel der Frage. Du hast recht, aber datepicker und datetimepicker haben einen ähnlichen Kern und die Lösung für die Frage funktioniert gut in booth. – DANIEL

+0

Gut zu wissen, aber es war sicherlich nicht selbstverständlich! :) – BobRodes

Antwort

1

können Sie verwenden Die beforeShowDay-Eigenschaft zum Zuweisen einer Funktion, die vor jedem Datum aufgerufen wird, wird angezeigt. Mit der Rückgabe können Sie Tage mit einer viel höheren Granularität steuern.

Sie können diese Geige für ein Beispiel betrachten. https://jsfiddle.net/tv760t1s/

var maxDate = new Date(2016, 8, 15, 8, 0); 
$(".dateChange").click(function() { 
    maxDate = new Date($(this).attr('value')); 
    console.log(maxDate); 
}); 
$("#datepicker").datepicker({ 
    minDate: 0, 
    maxDate: new Date(2016, 8, 15, 8, 0), 
    beforeShowDay: function(date) { 
    console.log(date, maxDate); 
    if (date > maxDate) { 
     return [false, 'noShowClass', 'Date time not available']; 
    } else { 
     return [true, '', '']; 
    } 
    } 
}); 

Die HTML:

<div>  
    <input type='text' id='datepicker' value=''> 
    <input class='dateChange' type='button' value='2016-08-15 08:00:00'> 
    <input class='dateChange' type='button' value='2016-09-10 08:00:00'> 
</div> 
+0

tks viel für Ihre Zeit und Hilfe! Tolle Lösung !! Funktioniert gut! Ich habe nur 2 Probleme - 1- Die ursprüngliche MAXDATE muss die "MAX OF ALL" sein - In unserem Beispiel ist die ursprüngliche maxdate 2016-08-15 - Wenn ich versuche, zu 2016-12-31 ändern .. sie ändern sich nicht . Sie stoppen am 2016/08/15. Ich löse das, identifiziere das letzte Datum und lege dieses als das ursprüngliche Maxdate. Kein Problem ... Das zweite Problem ist mit der Zeit - aber ich denke, das ist ein Problem mit dem Datepicker - die Maxdate zählt nur das Datum, nicht die Zeit .. Ich kann 2016-08-15 23:59:59 auswählen. . – DANIEL