1

「dd/mm/yyyy」の形式で日付値を取得するための入力ボックスが 2 つあります。

ショップのクーポンを作成する必要があるので、最初の日付が明日からであることを確認する必要があります。例のために。今日が 9 月 5 日の場合、最初の日付は 9 月 6 日より前であってはなりません。

2 番目の日付は、1 番目の日付より少なくとも 1 日長くする必要があります。ユーザーが最初の日付を 9 月 10 日に入力した場合、2 番目の日付を 9 月 10 日以前にすることはできません。

したがって、ユーザーが 2013 年 1 月 31 日 (2013 年 1 月 31 日) を最初の日付として入力すると、2 番目の日付は 2 月 1 日または 2 月 1 日以降の任意の日付になります。そのため、日付の検証も確認する必要があります。日付の検証のために、次のコードを使用しています-

    function chkdate(y,m,d)
    {
        var date = new Date(y,m-1,d);
        month1 = date.getMonth()+1;
        date1  =date.getDate();
        if(month1 <10)
              { 
               month1 = "0"+month1;
              }
        if(date1 <10)
              { 
               date1 = "0"+date1;
              }
        var convertedDate =""+date.getFullYear() + (month1) + date1;
        var givenDate = "" + y + m + d;
        return ((givenDate==convertedDate)?true:false); 
     }  

関数内で上記の関数を呼び出しています-

  function generate_coupon()
  {
         var f_arr = from_date.split("/"); //from_date is from 1st input date value.
     var f_day = f_arr[0];
     var f_month =f_arr[1];
     var f_year =f_arr[2]; 

         var t_arr = to_date.split("/"); //to_date is from 2nd input date value.
     var t_day = t_arr[0];
     var t_month =t_arr[1];
     var t_year =t_arr[2]; 

         if (chkdate(f_year,f_month,f_day)== true && chkdate(t_year,t_month,t_day)== true)
         {

         }
        else
         {
          alert('Enter Valid Date - dd/mm/yyyy');
         }
    }

その条件で、両方の日付値を確認する必要があります-最初の日付値は明日からであるかどうか、2番目の日付値は最初の日付と少なくとも1日は異なる必要があります。両方の条件が true の場合は、クーポンを生成します。そうでない場合は、無効な日付を警告します。

どうすればいいですか??

4

4 に答える 4

0

Farid は良い点を指摘していますが、基準日が動的である場合は、次のように機能するはずです。

function isValidInput(date1, date2) {
    return date2 >= getNextDate(date1);
}

function getNextDate(date) {
    // The number of milliseconds in one day
    var ONE_DAY = 1000 * 60 * 60 * 24;

    var date_ms = date.getTime();
    var nextDate_ms = date_ms + ONE_DAY;

    var nextDate = new Date(nextDate_ms);

    // Make sure to get rid of time, so that it's always at 00:00:00 hour.
    return new Date(nextDate.getYear(), nextDate.getMonth(), nextDate.getYear());
}
于 2012-09-05T06:23:02.837 に答える
0
function checkDates(d1, d2) {
    if (d1 instanceof Date && d2 instanceof Date) {
        var today = new Date();
        today.setHours(0, 0, 0, 0);
        if (date1.getTime() < (today.getTime() + 86400000)) {
            return "First date should be after today";
        }
        if (date2.getTime() < (date1.getTime() + 86400000)) {
            return "Second date should be after First date";
        }
        return "Dates are valid";
    }
    return "One or more invalid date";
}



var date1Str = "6/9/2012";
var date2Str = "7/9/2012";

var date1Arr = date1Str.split("/");
var date2Arr = date2Str.split("/");

var date1 = new Date(date1Arr[2], date1Arr[1] - 1, date1Arr[0]);
var date2 = new Date(date2Arr[2], date2Arr[1] - 1, date2Arr[0]);

alert(checkDates(date1, date2));
于 2012-09-05T07:59:42.177 に答える
0

これを試して

function generate_coupon() {
    var from_date = document.getElementById("fromDate");
    var to_date = document.getElementById("toDate");

    var from = new Date(from_date.value);
    var to = new Date(to_date.value);    
    var today = new Date();
    var tomorrow = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
    if (from >= tomorrow && to > from) {

    } else {
        alert('Enter Valid Date - dd/mm/yyyy');
    }
}​
于 2012-09-05T15:10:51.167 に答える
0

このタイプの検証を行うのではなく、定義されたコードを使用して他の日付フィールドに入力する方が簡単になると思います。それらのフィールドを編集不可にしました

于 2012-09-05T05:59:58.787 に答える