Как я могу передать дату моей функции addEventListener?

#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);
} );