I am trying to use JQuery date picker and I want to make use of the beforeShowDay method in order to block out dates in the date picker. I have been able to get the widget to work and if I define an array, the beforeShowDay method works flawlessly. But my issue is passing the data from my Django model to create an array. Is there a way to create an array within the element in the template in order to achieve this?
template
<script>
# works as intended when the array is defined manually
var array = [
"2022-10-01"
]
# this is where I am having trouble creating an array from the model data
var array = [
{% for x in listing_reservations %}
{{x.dates}}
{% endfor %}
]
$(function() {
$( "#id_start_date" ).datepicker(
{
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [ array.indexOf(string) == -1 ];
}
}
);
});
</script>
Advertisement
Answer
Finally figured it out, hopefully helps someone in the future! Thanks Haduki for the help :)
<script>
var array = [];
{% for x in reservations %}
var date = new Date("{{x.isoformat}}").toISOString().split('T')[0];
array.push(date);
{% endfor %}
console.info(array)
$(function() {
$( "#id_start_date" ).datepicker(
{
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [ array.indexOf(string) == -1 ];
}
}
);
});
</script>