Primefaces datePicker 范围选择:只允许选择一个日期

时间:2021-04-22 09:30:09

标签: jsf primefaces datepicker

我想允许用户只选择一个日期或一个日期范围。它用于 SQL 搜索。

选择一个日期:我搜索具有此日期的项目
选择了两个日期:我搜索这两个日期之间的项目

我使用的是 PrimeFaces 8.0。我希望只有一个字段可以做到这一点。

使用 测试的 2 个选项:

  • selectionMode="multiple",很好,但我不能将日期数量限制为最多 2 个日期。也不是很用户友好。能够只选择 2 个日期就好了,在选择的第三个日期前两个未选择。
  • selectionMode="range",完美的选择两个日期,但如果你只选择了一个日期,它不会提交给支持 bean,完全被忽略。如何只提交一个日期?

1 个答案:

答案 0 :(得分:1)

此代码将遍历页面上的所有primefaces 小部件。 如果小部件是一个日期选择器,并且只选择了一个日期,它将添加与第二个日期相同的日期。

for (var widgetVar in PrimeFaces.widgets) {
    
    try {

    var widget = PrimeFaces.widgets[widgetVar];

    if(widget.jq && widget.jq[0].classList.contains('p-datepicker')){
        var datePicker = PF('' + widget.widgetVar);
        console.log('datePicker found');
        console.log(datePicker);
        console.log('Date : ');
        console.log(datePicker.getDate());
       
        if(datePicker.getDate() && datePicker.getDate().length == 2 && datePicker.getDate()[1] == null){
            datePicker.setDate(datePicker.getDate()[0]);
        }
    }

    } catch (error) {
       console.error(error);
    }
    
}