2016-03-18 8 views
0

Fiddle Ereignisse anzuzeigen: https://jsfiddle.net/gtxzom8s/Wie für einen Tag in Jquery Datepicker

HTML:

<div id="dates"></div> 
<div id="dateevent"> 
</div> 

JS

var Event = function(text, className) { 
    this.text = text; 
    this.className = className; 
}; 

var events = {}; 
events[new Date("02/14/2011")] = new Event("Valentines Day", "pink"); 
events[new Date("02/18/2011")] = new Event("Payday", "green"); 

console.dir(events); 

$("#dates").datepicker({ 
changeMonth: true, 
changeYear: true, 
onSelect: function(date) { 
    var events2 = events[date]; 
    alert(events2); 
    //list the events in #dateeventDIV 
}, 
    beforeShowDay: function(date) { 
     var event = events[date]; 
     if (event) { 
      return [true, event.className, event.text]; 
     } 
     else { 
      return [true, '', '']; 
     } 
    } 
}); 

Wie kann ich das Skript ändern, so kann ich dateevent mit der bevöl Ereignisse für diesen Tag.

Antwort

1

Der date-Parameter für den Rückruf onSelect ist eine Zeichenfolge, die kein Date-Objekt ist, wie der Callback von vor einemShowDay. Sie können nur ein Date-Objekt mit dem Datum Parameter in dem

var events2 = events[new Date(date)]; 

https://jsfiddle.net/gtxzom8s/3/

Hinweis onSelect Rückruf erstellen, die Objektschlüssel Strings sind, also wenn Sie ein Date-Objekt als Schlüssel übergeben wird es zu einem umgewandelt werden Zeichenfolge (Fri Mar 18 2016 14:27:47 GMT-0400 (SA Western Standard Time))

+0

Was ist, wenn es mehr als einen Eintrag für den gleichen Tag gibt ... https://jsfiddle.net/gtxzom8s/4/ Danke. – Si8

+1

Dann müssen Sie einen anderen Weg finden, Ihre Ereignisdaten zu speichern, vielleicht wird jeder Tag eine Reihe von Ereignissen haben 'events [new Date (" 18.03.2016 ")] = [neues Ereignis (" Zahltag "," grün "), neues Event (" Leave Early "," grün ")]'. und dann lesen Sie es entsprechend zurück – Musa

+0

Ich werde sie in einem Array speichern, wie es aussieht und Split verwenden, um sie zu trennen. Vielen Dank. – Si8