web-dev-qa-db-ja.com

daterangepickerの値の取得bootstrap

こんにちは、javascriptの使用が初めてで、daterangepickerブートストラップの使用中に問題が発生しました。私はこのデモを実装しましたが、javascriptから開始日と終了日の値を取得することができません。

これはjavascriptです

<script type="text/javascript">
$(document).ready(function() {
    $('#reportrange').daterangepicker(
       {
          startDate: moment().subtract('days', 29),
          endDate: moment(),
          minDate: '01/01/2012',
          maxDate: '12/31/2014',
          dateLimit: { days: 60 },
          showDropdowns: true,
          showWeekNumbers: true,
          timePicker: false,
          timePickerIncrement: 1,
          timePicker12Hour: true,
          ranges: {
             'Today': [moment(), moment()],
             'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)],
             'Last 7 Days': [moment().subtract('days', 6), moment()],
             'Last 30 Days': [moment().subtract('days', 29), moment()],
             'This Month': [moment().startOf('month'), moment().endOf('month')],
             'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')]
          },
          opens: 'left',
          buttonClasses: ['btn btn-default'],
          applyClass: 'btn-small btn-primary',
          cancelClass: 'btn-small',
          format: 'DD/MM/YYYY',
          separator: ' to ',
          locale: {
              applyLabel: 'Submit',
              fromLabel: 'From',
              toLabel: 'To',
              customRangeLabel: 'Custom Range',
              daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'],
              monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
              firstDay: 1
          }
       },
       function(start, end) {
        console.log("Callback has been called!");
        $('#reportrange span').html(start.format('D MMMM YYYY') + ' - ' + end.format('D MMMM YYYY'));

       }
    );
    //Set the initial state of the picker label
    $('#reportrange span').html(moment().subtract('days', 29).format('D MMMM YYYY') + ' - ' + moment().format('D MMMM YYYY'));
 });
</script>  

これは、onclickメソッドを処理するボタンです

<button type="button" class="btn btn-primary" data-dismiss="modal">Save changes</button>  

「開始」と「終了」には、日付の値が含まれます。私のプロジェクトで後でコーディングを使用するための入力としてこれらの値を使用したい場合データベースに保存するには、どうすればそれらを呼び出すことができますか?

23
user2541163

ボタンにIDを与えます

_<button type="button" id="saveBtn" class="btn btn-primary" data-dismiss="modal">Save changes</button>
_

スクリプトにstartDateおよびendDate変数を追加します

_var startDate;
var endDate;
_

Daterangepickerコールバックでこれらの変数を設定します

_startDate = start;
endDate = end;
_

$(document).ready関数でそのボタンのクリックイベントを結び付けます

_$('#saveBtn').click(function(){
    console.log(startDate.format('D MMMM YYYY') + ' - ' + endDate.format('D MMMM YYYY'));
});
_

完全なjavascript

_<script type="text/javascript">
var startDate;
var endDate;

$(document).ready(function() {
    $('#reportrange').daterangepicker(
       {
          startDate: moment().subtract('days', 29),
          endDate: moment(),
          minDate: '01/01/2012',
          maxDate: '12/31/2014',
          dateLimit: { days: 60 },
          showDropdowns: true,
          showWeekNumbers: true,
          timePicker: false,
          timePickerIncrement: 1,
          timePicker12Hour: true,
          ranges: {
             'Today': [moment(), moment()],
             'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)],
             'Last 7 Days': [moment().subtract('days', 6), moment()],
             'Last 30 Days': [moment().subtract('days', 29), moment()],
             'This Month': [moment().startOf('month'), moment().endOf('month')],
             'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')]
          },
          opens: 'left',
          buttonClasses: ['btn btn-default'],
          applyClass: 'btn-small btn-primary',
          cancelClass: 'btn-small',
          format: 'DD/MM/YYYY',
          separator: ' to ',
          locale: {
              applyLabel: 'Submit',
              fromLabel: 'From',
              toLabel: 'To',
              customRangeLabel: 'Custom Range',
              daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'],
              monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
              firstDay: 1
          }
       },
       function(start, end) {
        console.log("Callback has been called!");
        $('#reportrange span').html(start.format('D MMMM YYYY') + ' - ' + end.format('D MMMM YYYY'));
        startDate = start;
         endDate = end;    

       }
    );
    //Set the initial state of the picker label
    $('#reportrange span').html(moment().subtract('days', 29).format('D MMMM YYYY') + ' - ' + moment().format('D MMMM YYYY'));

    $('#saveBtn').click(function(){
        console.log(startDate.format('D MMMM YYYY') + ' - ' + endDate.format('D MMMM YYYY'));
    });

 });
</script>  
_
30
Jacques Snyman
$('#IDOfDateRangePicker').data('daterangepicker').startDate;
$('#IDOfDateRangePicker').data('daterangepicker').endDate;
60
Razan Paul

データオブジェクトを取得する必要があります。

var startDate = $('#reportrange').data('daterangepicker').startDate._d;
var endDate = $('#reportrange').data('daterangepicker').endDate._d;

最後の_dリクエストに注目して、実際のjavascript日付オブジェクトを取得してください。

また、dataオブジェクトがundefinedである場合、bootstrap.jsが再インスタンス化された結果である可能性があります。これは、スクリプトを囲むのを忘れていたMVCページで私に起こりました。

@region scripts {

}
17
Chad Kuehn
var endDate=  $("#IDOfDateRangePicker").data('daterangepicker').endDate.format('YYYY-MM-DD');

またはその他の形式。

.endDate.format('YYYY-MM-DD'); 

.endDate.format('D MM YYYY');

.endDate.format('D MMMM YYYY');
15
Erdogan

daterangepicker startDateおよびendDateは、Javascript Dateオブジェクトではなくmomentオブジェクトを返します。

モーメントオブジェクトを日付オブジェクトに変換する方法は次のとおりです。

let startDate = moment($('#selector').data('daterangepicker').startDate).toDate();
let endDate = moment($('#selector').data('daterangepicker').endDate).toDate();
1
Deano

シンプル、入力範囲を直接取得する:

$(document).ready(function(){

    $('#reportrange span').bind('DOMSubtreeModified', function(e){
        alert('New value is: '+$('input[name=daterangepicker_start]').val()+' to '+$('input[name=daterangepicker_end]').val());
    });

})
0
Gabriel Glauber

私はこれがまったくエレガントではないことを知っています。とにかくそれを共有します。

まず、daterangepicker入力ボックスの値を取得します。

var date_range = $('#date_range').val();

「-」の間の日付を表示するように設定したら、それで分割しましょう:

var dates = date_range.split(" - ");

日付を文字列として取得するには:

var start = dates[0];
var end = dates[1];

'D MMMM YY'形式のMomentオブジェクトとして日付を取得するには:

var start = moment(dates[0],'D MMMM YY');
var end = moment(dates[1],'D MMMM YY');
0
emrey