如何从日期范围选择器中获取两个日期?

How can I get both dates from daterange picker?

我有一个 html 页面,它使用来自以下位置的简单 DateRange 输入:BeatPicker/demos 我可以从输入中获取 StartDate,但我似乎无法获取 EndDate。两个日期都是使用单个输入元素输入的。

<input type="text" id="demo" data-beatpicker="true" data-beatpicker-position="['*','*']" data-beatpicker-range="true"/>

<button onclick="myFunction()">Click me</button>

<script>
function myFunction() {
alert(demo.value);  // gives Start Date
alert(demo.startDate);  // gives Start Date

// below show undefined
//var x = myDatePicker.getSelectedEndDate;
//var x = document.getElementById("demo").getSelectedEndDate.value];
//alert(x);
}
</script>

BeatPicker Documentation

如果您没有选择日期,那么您的功能将无法正常工作。

我会使用日期选择器的 select 事件来实际获取值。

根据BeatPicker文档,获取开始日期和结束日期的方法是getSelectedStartDategetSelectedEndDate。由于您使用了声明性语法,您还可以通过 data-beatpicker-id="myPicker" 为日期选择器提供 id。如果这样做,您可以通过该 ID 引用日期选择器。

更新您的元素声明:

<input data-beatpicker-id="myPicker" type="text" id="demo" data-beatpicker="true" data-beatpicker-position="['*','*']" data-beatpicker-range="true" />

尝试更改您的函数以使用这些方法:

function myFunction(){
  var startDt = myPicker.getSelectedStartDate();
  var endDt = myPicker.getSelectedEndDate();

  console.log(startDt, endDt);
}

在演示页面的底部,您可以看到挂接到数据选择器事件的示例。使用 selectchange 事件比按钮调用的函数更好:

    var statusGenerator = function (text) {
        var statusElem = $(".status");
        var child = $("<span></span>").text(text);
        statusElem.append(child);
    };

    myDatePicker.on("select", function (data) {
        myFunction();
        statusGenerator(data.string + " selected")
    });

    myDatePicker.on("change", function (data) {
        myFunction();
        statusGenerator("Date picker changed current date: "+data.string);
    });