4

RoRアプリケーションにjquery1.8.1.min.jsのjquerydate-pickerの2つの異なるインスタンスがあります。

私はこの機能を持っています:

    $(".date-picker:not('#policy_starts_on')").datepicker();
    $('#policy_starts_on.date-picker').datepicker({
        startDate: '0',
        endDate: '+90d'
    });

これはこの入力に当てはまります:

<input class="required  date-picker input-small align-center" id="policy_starts_on" name="policy[starts_on]" size="30" type="text" value="02/27/2013">

それから私はこの機能を持っています:

    $(".date-picker:not('#act_event_ends_on')").datepicker();
    $('#act_event_ends_on.date-picker').datepicker({
        startDate: '0',
        endDate: '+180d'
    });

これはこの入力に当てはまります:

<input class="required date-picker input-small align-center" id="act_event_ends_on" name="act_event[ends_on]" size="30" type="text">

両方の入力は、rubyフォームヘルパーによって生成されています。

これは最初のフォームヘルパーです:

= f.input :starts_on, :label => 'Policy Start Date', :required => true

そして、これは2番目のフォームヘルパーです。

= f.input :ends_on, :label => 'Event End Date', :required => true 

質問: 2番目の入力がまったく制限されていないのに、最初の入力が適切に制限されているのはなぜですか(つまり、過去の1日を選択できず、90日後までしか移動できません)。


4

2 に答える 2

2

この行:

$(".date-picker:not('#policy_starts_on')").datepicker();

2 番目の入力 (id="act_event_ends_on" を持つもの) を初期化します。これは、クラスがあり、 iddate-pickerがないためです。policy_starts_on

その結果、この要素はすでに初期化されており、次のコードは何もしません。

$('#act_event_ends_on.date-picker').datepicker({
    startDate: '0',
    endDate: '+180d'
});

解決:

私の推奨事項は、例外に特別なクラス名 (つまり、「date-picker-special」) を付けることです。

<input class="required  date-picker date-picker-special input-small align-center" id="policy_starts_on" name="policy[starts_on]" size="30" type="text" value="02/27/2013">

<input class="required date-picker date-picker-special input-small align-center" id="act_event_ends_on" name="act_event[ends_on]" size="30" type="text">

次に、次のことができます。

$(".date-picker:not('.date-picker-special')").datepicker();
$('#policy_starts_on.date-picker').datepicker({
    startDate: '0',
    endDate: '+90d'
});
$('#act_event_ends_on.date-picker').datepicker({
    startDate: '0',
    endDate: '+180d'
});
于 2013-02-27T17:17:06.517 に答える
1

実験のために、これらの日付ピッカー設定を逆の順序で宣言すると、逆の動作が発生しますか? 反対のものが壊れた場合、datepicker にバグがあると結論付けることができます (これはありそうもないことです)。それ以外の場合は、独自のコードを確認する必要があります。

また、各ブロックの前に次のようなものがあることに注意してください。

$(".date-picker:not('#policy_starts_on')").datepicker();

これは、特定の 1 つを除くすべての日付ピッカーを選択することを意味します。

次回セットアップするときは、すでに話されています。これらのワンライナーを削除してみると、次のものが残ります。

$('#policy_starts_on.date-picker').datepicker({
    startDate: '0',
    endDate: '+90d'
});

$('#act_event_ends_on.date-picker').datepicker({
    startDate: '0',
    endDate: '+180d'
});
于 2013-02-27T17:16:27.363 に答える