Как решить проблему NaN-NaN-NaN с помощью DatePicker и функции? - PullRequest
0 голосов
/ 31 марта 2020

Я использую Datepicker для выбора даты и функцию для преобразования стиля даты в требуемый формат. Текущий формат, который требуется при выборе, использует dd-mm-yyyy ИЛИ 20-03-2020. (Стиль моей страны) Хотя формат, который требуется отправить в API с использованием Ajax, равен yyyy-mm-dd ИЛИ 2020-03-20. Поэтому перед преобразованием необходимо выполнить преобразование.

Во время выбора я использую Datepicker с format: "dd-mm-yyyy",, как показано ниже. Я также смог преобразовать дату из dd-mm-yyyy в yyyy-mm-dd, используя функцию, показанную ниже.

НО, NaN-NaN-NaN ошибка появляется (console.log) во время отправки. Как это исправить?

HTML

<input type="text" class="form-control" id="actualDate"></input>

DATEPICKER

$('#actualDate').datepicker({
    language: 'en',
    format: "dd-mm-yyyy",
    clearButton: true,
    toggleSelected: true,
    autoclose: true,
    todayHighlight: true,
    ignoreReadonly: true,
});

JS Функция

$.ajax({
    url : url_projectList + '/1st_api',
    crossDomain: true,
    type : 'POST',
    dataType : 'json',
    data: JSON.stringify({project_id: id}),
    success: function(response){

        var actualDate = $('#actualDate').val();    

        if ($("#actualDate").val() == ""){
            var actual_date = null;  // This is working fine
        } else {
            actual_date = sendDate(actualDate);   // Here is the error coming
        }

        console.log(actual_date)  // I got NaN-NaN-NaN

        $.ajax({
            url : url_projectList + '/2nd_api',
            type : 'POST',
            dataType : 'json',
            data: params,
        });
    }
});

function sendDate(input_date){

    proc_date = new Date(input_date)
    year = proc_date.getYear() + 1900
    month = proc_date.getMonth() + 1
    day = proc_date.getDate()

    if (month < 10)
    {
      month = "0" + month;
    }
    if (day < 10)
    {
      day = "0" + day;
    }

    return year +"-"+ month +"-"+ day;
}

1 Ответ

0 голосов
/ 31 марта 2020
        <input type="text" class="form-control" id="actualDate"/>

        $('input[id$=tbDate]').datepicker({
            language: 'en',
            clearButton: true,
            toggleSelected: true,
            autoclose: true,
            todayHighlight: true,
            ignoreReadonly: true,
            dateFormat: 'yy-mm-dd',
            onSelect: function(dateText) {
                console.log("Selected date: "+ this.value);
            }
        });

        $.ajax({
            url : url_projectList + '/1st_api',
            crossDomain: true,
            type : 'POST',
            dataType : 'json',
            data: JSON.stringify({project_id: id}),
            success: function(response){

                var actualDate = $('#actualDate').datepicker('getDate');  

                if (actualDate == ""){
                    actual_date = null; 
                }

                console.log(actual_date);

                $.ajax({
                    url : url_projectList + '/2nd_api',
                    type : 'POST',
                    dataType : 'json',
                    data: params,
                });
            }
        });

удалена дополнительная функция для форматирования даты в формате "гг-мм-дд", я использовал опцию dateFormat для datepicker lib

Надеюсь, это поможет вам: -)

...