0

要素内の入力を受け取り、適切な最小/最大日付を設定する jQuery 関数を作成しようとしました。しかし、ページに複数の dateRinge がある場合、一方が他方の設定を取得します。すべての dateRange には独自のスコープが必要です。

ここにデモがあります: http://jsbin.com/ahozug/1/edit、そしてここに私のコードがあります:

HTML

     <div class="dateRange">
        <label>Label1</label>
        <input type="text" class="from" />
        <input type="text" class="to" />
    </div>
    <div class="dateRange">
        <label>Label2</label>
        <input type="text" class="from" />
        <input type="text" class="to" />
    </div>

JS

$.fn.dateRange = function(){
    var self = this;
    var selectedDate;
    $("input",this).prop('readonly', true);
    $('.from',this).datepicker({
        onClose:function( selectedDate ) {
            $( ".to",self ).datepicker( "option", "minDate", selectedDate );
        }
    });

    $('.to',this).datepicker({
        onClose:function( selectedDate ) {
            $( ".from",self ).datepicker( "option", "maxDate", selectedDate );
        }
    });
};
$( "div.dateRange" ).dateRange();
4

1 に答える 1

0

$( ".to",self ) および $( ".from",self ) は、実際には「to」と「from」の両方に一致します。これは、「self」が「window」であるためです。したがって、設定は両方の日付ピッカーに適用されます。

あなたが試すことができるのは、次を使用することです:

$(this).siblings(".from") instead of $(".from",self)

$(this).siblings(".to") instead of $(".to",self)
于 2013-06-06T17:14:25.140 に答える