-1

いくつかのドロップダウン リストの値を比較しています。基本的に、開始日は終了日よりも前でなければなりません。

ゴーグルなどで多くのサンプル ソース コードを見つけましたが、DD/MM/YYYY しか提供していません。
MM/YYY のみが必要です。「DD」を削除しようとすると、日付のキーワード/要素が原因で正しい場合はエラーが発生します。

それに対する解決策はありますか?任意のヘルプまたは参照リンクが良いでしょう。ありがとう

Ps 以下のコードは DD/MM/YYYY で機能しています

function y2k(number) {
    return (number < 1000) ? number + 1900 : number;
}
 function padout(number) {
    return (number < 10) ? '0' + number : number;
}

function validate(what) {
    var startday = what.startday.options[what.startday.selectedIndex].value;
    var startmonth = what.startmonth.options[what.startmonth.selectedIndex].value;
    var startyear = what.startyear.options[what.startyear.selectedIndex].text;
    var endday = what.endday.options[what.endday.selectedIndex].value;
    var endmonth = what.endmonth.options[what.endmonth.selectedIndex].value;

    unvalidstartdate = startday + '/' + startmonth + '/' + startyear;
    unvalidenddate = endday + '/' + endmonth;

    var startdate = new Date(startyear - 0, startmonth - 1, startday - 0);
    var enddate = new Date(endmonth - 1, endday - 0);

    var validstartdate = padout(startdate.getDate()) + '/'
            + padout(startdate.getMonth() + 1) + '/'
            + y2k(startdate.getYear())
    var validenddate = padout(enddate.getDate()) + '/'
            + padout(enddate.getMonth() + 1) + '/' + y2k(enddate.getYear());

    if (unvalidstartdate != validstartdate) {
        alert('Start Date: '
                + what.startday.options[what.startday.selectedIndex].text
                + ' '
                + what.startmonth.options[what.startmonth.selectedIndex].text
                + ' '
                + what.startyear.options[what.startyear.selectedIndex].text
                + ' is invalid');
        return false;
    }

    if (unvalidenddate != validenddate) {
        alert('End Date: '
                + what.endday.options[what.endday.selectedIndex].text + ' '
                + what.endmonth.options[what.endmonth.selectedIndex].text
                + ' '

                + ' is invalid');
        return false;
    }

    starttime = Date.UTC(y2k(startdate.getYear()), startdate.getMonth(),
            startdate.getDate(), 0, 0, 0);
    endtime = Date.UTC(y2k(enddate.getYear()), enddate.getMonth(), enddate
            .getDate(), 0, 0, 0);

    if (starttime < endtime) {
    alert('VALID');         
            // valid
        } else {
            alert('NOT VALID');
            return false;
    }

    currentdate = new Date();
    currenttime = Date.UTC(y2k(currentdate.getYear()), currentdate
            .getMonth(), currentdate.getDate(), 0, 0, 0);

    if (endtime < currenttime) {
        // valid
    } else {
        alert('End Date is not less than todays date');
        return false;
    }

    what.startdate.value = validstartdate;
    what.enddate.value = validenddate;
    return true;
}
 //-->
  </script>

 <form>
Start Date: <select name="startday">
    <option value="01">1st
    <option value="02">2nd
    <option value="03">3rd

</select> <select name="startmonth">
    <option value="01">january
    <option value="02">february
    <option value="03">march

</select> <select name="startyear">
    <option>1990
    <option>1991
    <option>1992
</select>

<p>

    End Date: <select name="endday">
        <option value="01">1st
        <option value="02">2nd
        <option value="03">3rd

    </select> <select name="endmonth">
        <option value="01">january
        <option value="02">february
        <option value="03">march

    </select>  <input type="hidden" name="startdate"> <input type="hidden"
        name="enddate">
   <p>

    <input type="button" onClick="validate(this.form)" value="Validate">
</form>
4

5 に答える 5

0

Date コンストラクターは年と月のみを必要とし、文字列を使用できるため、次のようなフォーム コントロールから値を直接使用できます。

var start = new Date(startyear, --startmonth);
var end = new Date(endyear, --endmonth);

if (start < end) {
  // start is before end
}

ああ、あなたはgetFullYear完全な年数を取得するために使用する必要があります。Java との互換性のために、元のgetYearメソッドは 2 桁の年のみを返します。

于 2012-07-05T08:44:38.173 に答える
0
var startDateFinal = "your startdate element value";
var endDateFinal = "your enddate element value";
var startDate = new Date (startDateFinal);
var endDate = new Date(endDateFinal);
    if(endDate.getTime() > startDate.getTime()){
            // some logic
     }
     else{
           // some logic
     }
于 2012-07-05T07:19:51.807 に答える
0

以下のコードは、開始日フィールドが終了日フィールドよりも小さくなる 2 つの日付フィールドを提供します。コードは正常に動作し、 http ://jquery.com/およびhttp://jquery.com/サイトで jquery、jqueryui/calendar を取得できます。

以下のコードを HEAD セクションに含めます

$(function() {
    var dates = $( "#txt_startdate, #txt_enddate" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        changeYear: true,
        numberOfMonths: 2,
        dateFormat: 'yy-mm-dd',
        onSelect: function( selectedDate ) {
            var option = this.id == "txt_startdate" ? "minDate" : "maxDate",
                instance = $( this ).data( "datepicker" ),
                date = $.datepicker.parseDate(
                    instance.settings.dateFormat ||
                    $.datepicker._defaults.dateFormat,
                    selectedDate, instance.settings );
            dates.not( this ).datepicker( "option", option, date );
        }
    });


});

HTMLのボディセクションに以下のコードを入力してください

<input name="txt_startdate" id="txt_startdate"  type="text" />
<input name="txt_enddate"  id="txt_enddate" type="text" />

これがお役に立てば幸いです

于 2012-07-05T10:21:36.220 に答える
0

これを試して

function test()
{
var date1,date;
date1 = new Date(2011,11,1); 
// startdate drop down values   
//2011-->year   11--> startmonth  1-->startdate(this you keep always as 1 for startdate and end date) since you only wants to compare mm/yyyy
date2 = new Date(2002,11,1); 
// enddate drop down values   
//2011-->year   11--> endmonth  1-->enddate(this you keep always as 1 for startdate and end date) since you only wants to compare mm/yyyy

if(date1>date2)
    alert("date1 is > date2")
else
    alert("date2 is > date1")
}

この日付をチェック

于 2012-07-06T06:00:05.640 に答える