#javascript #jquery #addeventlistener #jquery-ui-datepicker
#javascript #jquery #addeventlistener #jquery-ui-datepicker
Вопрос:
Я хочу передать selectedDate
сгенерированный из Datepicker в valider_planning.addEventListener('click', function(){})
В DatePicker selectedDate
по умолчанию генерируется текущая дата или она изменяется, если пользователь выбирает определенную дату.
Я попытался сделать это, передав глобальную переменную, однако, похоже, она не работает для selectedDate
сгенерированного onSelect: function(selectedDate)
Это предназначено для выполнения: когда пользователь нажимает valider_planning
кнопку, я могу отправить информацию через Ajax в мой php-файл, чтобы подтвердить планирование.
Вот мой код :
let current_date;
var date_choisie;
var selectedDate;
const user = $("#user").val();
const boutique = $("#boutique").val();
// Datepicker on navBar
$( function() {
$("#calendrier").datepicker({
dateFormat: "yy-mm-dd",
onSelect: function(selectedDate) {
console.log("Date apres choix : " selectedDate "type : " typeof(selectedDate) "Employé : " user "Boutique : " boutique);
AjaxCall(selectedDate, boutique);
}
})
//set date as current (by default)
$("#calendrier").datepicker('setDate', new Date());
//get date in a variable
date_choisie = $('#calendrier').datepicker('getDate');
selectedDate = $.datepicker.formatDate("yy-mm-dd", date_choisie);
console.log("date par défaut : " selectedDate "type : " typeof(selectedDate) "Employé : " user "Boutique : " boutique);
AjaxCall(selectedDate, boutique);
} );
valider_planning.addEventListener('click', function(){
$.ajax({
method: 'get',
url: 'http://planning-ilm.atwebpages.com/valider_planning/' selectedDate '/' boutique,
dataType: 'json',
success: function(data){
showplannings(data.datecourante, data.message, affectation);
plannings2 = data.message;
datecourante2 = data.datecourante;
}
});
$("#validation_modal")[0].style.visibility = "visible";
$("#validation_modal")[0].style.display = "block";
})
Комментарии:
1. Если это глобальная переменная, вам не нужно ее передавать. Измените
onSelect: function(selectedDate) {
на простоonSelect: function() {
, иselectedDate
внутри обратного вызова будет использоваться глобальныйselectedDate
2. Попробовал, но теперь дата больше не меняется
3. Ах, прошу прощения, я отвечал на заданный вопрос , а не на требование 🙂 — в вашем случае вы используете то же имя переменной , которое у вас уже есть в другом месте, поэтому вы на самом деле не хотите «передавать дату»
onSelect: function(datepickerSelectedDate) { selectedDate = datepickerSelectedDate;
, чтобы скопировать дату выбора даты в вашу глобальную переменную (с тем же именем)
Ответ №1:
Я думаю, что я решил это :
Я существенно изменил selectedDate
selectedDate2
и добавил selectedDate = selectedDate2
var selectedDate;
$( function() {
$("#calendrier").datepicker({
dateFormat: "yy-mm-dd",
onSelect: function(selectedDate2) {
console.log("Date apres choix : " selectedDate2 "type : " typeof(selectedDate2) "Employé : " user "Boutique : " boutique);
AjaxCall(selectedDate2, boutique);
selectedDate = selectedDate2;
}
})
//set date as current
$("#calendrier").datepicker('setDate', new Date());
//get date in a variable
date_choisie = $('#calendrier').datepicker('getDate');
selectedDate = $.datepicker.formatDate("yy-mm-dd", date_choisie);
console.log("date par défaut : " selectedDate "type : " typeof(selectedDate) "Employé : " user "Boutique : " boutique);
AjaxCall(selectedDate, boutique);
} );