2017-10-10 35 views
0

注文した商品の回収日を選択するためのチェックアウトページでPickadate.jsライブラリを使用しています。Pickadate.jsは無効日数を動的に変更します

バックエンドでは、クライアントは特定の日をブロックして、クライアントがこの日を選択できないようにすることができます。たとえば。日曜日、店は日曜日に閉鎖されています。私はそうのようなライブラリの初期化しています

:チェックアウトページで

/* Initiate the Datepicker */ 
     var $dateInput = $('#collection-date').pickadate({ 
      firstDay: 2, 
      onSet: function(e) { 
       if(e.select) { 
        $('#select-time').slideDown(); 
        var timeInput = $('#collection-time').pickatime(); 
       } else { 
        $('#select-time').slideUp(); 
       } 
      }, 
     }); 
     var picker = $dateInput.pickadate('picker'); 

をカレンダーがある店をピックアップできるようにする必要がありますので、お客様は、収集時間を変化させてきた2つの店舗の間で選択することができます選択されてそれに基づいて、収集の利用可能日数を表示する。

私はそうのような無効日設定:

picker.set('disable', get_disabled_days(store_id)); 

この機能を正しく右オフ(整数として)日の配列を返し、ブロック:ストアは、私が呼んで選択されると

function get_disabled_days(store_id) { 

     var days_array = []; 
     days_array = $('#store-' + store_id).find('.disabled-days').attr('data-disabled-dates').split(',').map(function(item) { 
      return parseInt(item, 10); 
     }); 

     //console.log(days_array); 

     return days_array; 

    } 

を日々。

お客様が店舗を変更するとすぐに問題が発生します。無効日配列をリセットする代わりに、選択したストアの無効日を追加するだけです。したがって、顧客が第2の店舗を選択すると、カレンダーは最初に選択した店舗と2番目に選択した店舗の日数をブロックします。

ライブラリーを停止して再初期化しようとしましたが、無効になった日付配列をクリアして顧客が新しいストアを選択した後に再設定する方法がわかりません。

答えて

1

これを正しく理解していれば、新しいストアを選択したときにそのストアに関連する日付のみが無効になるように、datepickerの日付をリセットする必要があります。

the docsが指定通り、

ここで注意すべき重要なことは、有効として何かを「設定」ということであるか無効では完全に新しいとそれらを置き換えるのではなく、無効にするには、アイテムのコレクションに新しい要素を追加しますコレクション。

無効な呼び出しを実行する前にすべての日付を有効にできますか?

// Enable all the dates 
picker.set('enable', true) 
picker.set('disable', false) 

picker.set('disable', get_disabled_days(store_id)); 
関連する問題