Как обработать ошибку для проверки между двумя датами? - PullRequest
1 голос

У меня есть страница JSP, где пользователь выбирает между двумя датами. Мне нужна проверка, чтобы убедиться, что предел диапазона составляет месяц. Мне нужно отобразить сообщение для обработки ошибок об этой проблеме.

Я попытался создать функцию с возвращением true и false. Когда возвращение ложно, сообщение уже появляется, но система все еще работает на следующем шаге. Вот моя страница JSP: (я использую редактор NetBeans)

var fromDate = new Date(document.getElementById("fromTgl").value);
var toDate = new Date(document.getElementById("toTgl").value);
//call the function
var validateDate;
    validateDate = rangeWithinDates(toDate,fromDate);
//funtion for validation within two dates
function rangeWithinDates(toDate,fromDate){
      var diff = Math.abs(toDate.getTime() - fromDate.getTime());
      var daysDiff = diff / (1000 * 60 * 60 * 24);

      if (daysDiff>30){
         window.alert("Please limit the date range to 1 month!");
         return false;
      } else {
         return true;
      }
 }

это мой полный сценарий

<script>
  var officeCode;
  var fdsReport;
  var rows;

  $(document).ready(function() {

    esLoadingAnimWindow("wndLoading");

      /** Get the userId from session scope **/
    var userId = "${sessionScope.UserSession.getUserId()}";
    var CurrOfficeCode = "${sessionScope.UserSession.getUserOfficeCode()}";

    if ($("#officeCode").data("kendoDropDownList") == null) {
        $('#officeCode').kendoDropDownList({
          dataTextField: "nameShort",
          dataValueField: "officeCode",
          dataSource: {
            transport: {
              read: {
                dataType: "json",
                url: getFormRestUrl() + "/getListOffice?officeCode=" + CurrOfficeCode
              }
            }
          },
          optionLabel: "Select Office Code"
        });
    }

    if($("#fromTgl").data("kendoDatePicker")==null) {
      $("#fromTgl").kendoDatePicker({value: new Date(), format: "dd MMMM yyyy"});
    }

    if($("#toTgl").data("kendoDatePicker")==null) {
      $("#toTgl").kendoDatePicker({value: new Date(), format: "dd MMMM yyyy"});
    }

    $("#wndLoading").kendoWindow({
      actions: ["Close"],
      modal: true,
      width: "350px",
      resizable: false,
      title: false,
      draggable: false,
      open: function(e) { $("html, body").css("overflow", "hidden"); },
      close: function(e) {
    $("html, body").css("overflow", "");
      }
    }).data("kendoWindow");

    // Call the function to stop scrolling main window when scrolling the content of kendo dropdownlist.
    stopScroll($("#officeCode").data("kendoDropDownList").ul.parent());
    });

    $("#btnProcess").click(function(e){
        e.preventDefault();
        $("#wndLoading").data("kendoWindow").center().open();

        var fromDate = new Date(document.getElementById("fromTgl").value);
        var toDate = new Date(document.getElementById("toTgl").value);
        var validateDate;
        validateDate = rangeWithinDates(toDate,fromDate);

        fdsReport = new kendo.data.DataSource({
            transport: {
                read: {
                    url: getFormRestUrl() + "/getReportFidusia?officeCode=" + $("#officeCode").val().trim() 
                                          + '&beginDate=' + dateToString($("#fromTgl").data("kendoDatePicker").value()) 
                                          + '&endDate=' + dateToString($("#toTgl").data("kendoDatePicker").value()),
                    dataType: "json",
                    contentType: "application/json"
                }
            }
        });

        rows = [{
                cells:[
                    { value: "TN NY NN" },
                    { value: "Pemberi Fidusia" },
                    { value: "Pekerjaan" },
                    { value: "Kota Lahir" },
                    { value: "Tanggal Lahir" }
                ]
        }];

        fdsReport.read().then(function(){
            var data = fdsReport.data();
            for (var i = 0; i < data.length; i++){
                rows.push({
                    cells: [
                        { value: data[i].tNnYnN},
                        { value: data[i].pemberiFidusia},
                        { value: data[i].jobCust},
                        { value: data[i].kotaLahir},
                        { value: data[i].tglLahir.slice(0,4) + "-" + data[i].tglLahir.slice(5,7) + "-" + data[i].tglLahir.slice(8,10)}
                    ]
                });
            };

            var workbook = new kendo.ooxml.Workbook({
                sheets: [
                    {
                        columns: [
                            { autoWidth: true },
                            { autoWidth: true },
                            { autoWidth: true },
                            { autoWidth: true },
                            { autoWidth: true }
                        ],
                        title: "Laporan Fidusia",
                        rows: rows
                    }
                ]
            });
            $("#wndLoading").data("kendoWindow").close();

            // Save the file as Excel file with extension xlsx
            kendo.saveAs({
                dataURI: workbook.toDataURL(),
                fileName: "erpt_laporan_fidusia.xlsx"
            });
        });
    });

    //Ajax error listener
    $(document).ajaxError(function (event, jqxhr, settings, thrownError){
        //Close the loading window if it is opened
        $("#wndLoading").data("kendoWindow").close();

        //Open the alert window.
        var wndAlert = registerAlertModalWindow("wndAlert", jqxhr.responseText);
        wndAlert.center().open();
    });

    function getGLobalRestUrl() {
    return "/easy/api";
    }

    function getFormRestUrl() {
      return getGLobalRestUrl() + "/OMTRNF661";
    }

    function dateToString(pDate) {
      return kendo.toString(pDate, 'yyyy-MM-dd').trim();
    }

    function rangeWithinDates(toDate,fromDate){
      var diff = Math.abs(toDate.getTime() - fromDate.getTime());
      var daysDiff = diff / (1000 * 60 * 60 * 24);

      if (daysDiff>30){
         window.alert("Please limit the date range to 1 month!");
         document.getElementById("toTgl").value = "";
         return false;
      }
      return true;
    }
</script>

результат этого кода Я ожидаю, если возвращение false покажет сообщение об ошибке и остановит работу. Таким образом, пользователи должны выбрать дату в соответствии с заданным диапазоном. И если вернуть true, будет переход к следующему шагу. Пожалуйста, помогите мне решить эту проблему ..

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Ваша validateDate не мешает вам скачивать: это просто неиспользуемый логический тип. Если вы хотите, вам нужно сделать что-то вроде этого:

if (validateDate){<the rest of your download code section>}
1 голос
/ 21 мая 2019

Вы можете сбросить значение текстового поля на пустое и попросить пользователя ввести значение снова.Вы можете сбросить только последнее значение даты или оба.

if (daysDiff>30){
     window.alert("Please limit the date range to 1 month!");
     document.getElementById("toTgl").value = "";
     return false;
}
return true;

В функции загрузки файла проверьте значение true или false

if (validateDate == true){
// your code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...