web-dev-qa-db-ja.com

jqueryの日付ピッカーは、最初の日付フィールドで選択された日付に基づいて、2番目の日付フィールドの日付を制限します

私はJquery日付ピッカーを使用していて、ユーザーが日付を選択すると、下のフィールドに日付+1が入力される次のコードがあります

$('#dt2').datepicker({
        dateFormat: "dd-M-yy" 
    });

$("#dt1").datepicker(
    {dateFormat: "dd-M-yy", 
    minDate:  0,
onSelect: function(date){
var date2 = $('#dt1').datepicker('getDate');
            date2.setDate(date2.getDate()+1);
            $('#dt2').datepicker('setDate', date2);

dt2フィールドの日付を下回ってはいけないdt1フィールドの日付を制限したいのですが。例えば。 dt1で選択した日付が01-May-2013の場合、ユーザーは01-May-2013以降の日付を選択できます。02-May-2013以上

日付フィールド2の日付ピッキングを制限するにはどうすればよいですか?

11
Jåcob

私はあなたのためにjsfiddleを作成しました。 「間違いない」かどうかは100%わかりませんが、ユーザーが日付を手動で入力できないようにするには、入力をreadonlye.gに設定します。

<input type="text" id="dt1" readonly="readonly">

現時点では、dt2 onCloseをチェックし、その日付がdt1sの日付よりも短い場合は修正します。また、dt1で日付が選択されている場合、dt2の minDate はdt1 date +1に設定されます。

$(document).ready(function () {

    $("#dt1").datepicker({
        dateFormat: "dd-M-yy",
        minDate: 0,
        onSelect: function (date) {
            var date2 = $('#dt1').datepicker('getDate');
            date2.setDate(date2.getDate() + 1);
            $('#dt2').datepicker('setDate', date2);
            //sets minDate to dt1 date + 1
            $('#dt2').datepicker('option', 'minDate', date2);
        }
    });
    $('#dt2').datepicker({
        dateFormat: "dd-M-yy",
        onClose: function () {
            var dt1 = $('#dt1').datepicker('getDate');
            var dt2 = $('#dt2').datepicker('getDate');
            //check to prevent a user from entering a date below date of dt1
            if (dt2 <= dt1) {
                var minDate = $('#dt2').datepicker('option', 'minDate');
                $('#dt2').datepicker('setDate', minDate);
            }
        }
    });
});

jsfiddle を参照してください

40
SirDerpington

ここに私がそれをする方法があります-

[〜#〜] demo [〜#〜]

そして、コードは次のとおりです

$('#dt2').datepicker({
    dateFormat: "dd-M-yy" 
});

$("#dt1").datepicker({
    dateFormat: "dd-M-yy", 
    minDate:  0,
    onSelect: function(date){            
        var date1 = $('#dt1').datepicker('getDate');           
        var date = new Date( Date.parse( date1 ) ); 
        date.setDate( date.getDate() + 1 );        
        var newDate = date.toDateString(); 
        newDate = new Date( Date.parse( newDate ) );                      
        $('#dt2').datepicker("option","minDate",newDate);            
    }
});
18
SachinGutte

私はあなたのコードを変更したので、date2の最小日付が自動的に設定され、date1がdate2より大きい場合、それはdate2 = date1を設定します

  $("#dt1").datepicker({
            dateFormat: "dd/mm/yy",
            onSelect: function (date) {
                var dt1 = $('#dt1').datepicker('getDate');
                var dt2 = $('#dt2').datepicker('getDate');
                if (dt1 > dt2) {
                    $('#dt2').datepicker('setDate', dt1);
                }
                $('#dt2').datepicker('option', 'minDate', dt1);
            }
        });
        $('#dt2').datepicker({
            dateFormat: "dd/mm/yy",
            minDate: $('#dt1').datepicker('getDate'),
            onClose: function () {
                var dt1 = $('#dt1').datepicker('getDate');
                var dt2 = $('#dt2').datepicker('getDate');
                //check to prevent a user from entering a date below date of dt1
                if (dt2 <= dt1) {
                    var minDate = $('#dt2').datepicker('option', 'minDate');
                    $('#dt2').datepicker('setDate', minDate);
                }
            }
        });
4
kannan