限制 Javascript 中的 Primefaces datePicker 分钟和秒

Limit the Primefaces datePicker minutes and seconds from Javascript

提问人:Maria1995 提问时间:11/7/2023 更新时间:11/9/2023 访问量:19

问:

我正在使用 datePicker Primefaces 元素,以便允许用户选择小时、分钟和秒的值。目前,小时的值介于 0 和 24 之间,分钟介于 0 和 60 之间,秒数相同。

我想将这种选择的可能性限制为一些静态值,这些值是通过获取页面上发布的视频长度获得的。我在 JS 中拥有小时、分钟和秒的值。

因此,例如,如果视频有 1 分 30 秒,我希望小时部分不允许用户向上或向下按箭头,分钟最多为 30 分钟,分钟为 1。我用JS尝试了以下方法,但出现错误:“timePicker.setMaxTime不是函数”。在Java中,我可以设置Primefaces datePicker的minDate和maxDate,但是我不知道那里的视频长度,只能从JS中找到。

我能做些什么?

UI datePicker 元素:

                                <p:datePicker id="timeDatePicker"
                                              widgetVar="widgetVarOfDatePicker"
                                              value="#{traineeDashboard.newIncidentTimestamp}"
                                              appendTo="@this">
                                    <f:converter converterId="timeConverter"/>
                                </p:datePicker> 

JS代码:

    var timePicker = PF('widgetVarOfDatePicker'); // Replace with your actual widgetVar
    var hoursDropdown = $('div.ui-hour-picker span:eq(1)');
    var minutesDropdown = $('div.ui-minute-picker span:eq(1)');
    var secondsDropdown = $('div.ui-second-picker span:eq(1)');

    hoursDropdown.text(hours);
    minutesDropdown.text(minutes);
    secondsDropdown.text(seconds);

    if (hours == 0) {
        timePicker.setMaxTime(minutes, seconds);
    } else {
        timePicker.setMinTime(hours, minutes);
    }

    hoursDropdown.trigger('change');
    minutesDropdown.trigger('change');
    secondsDropdown.trigger('change');
} 
JavaScript Java 素面

评论


答:

1赞 Melloware 11/9/2023 #1

这将很难实现,因为如此多的内部日期选择器代码是在 60 秒、60 分钟等时间内中继的。

多年来一直有一张未结的票:https://github.com/primefaces/primefaces/issues/5551

您可能想对这个问题投赞成票,但请注意,其他 PrimeFaces 库、PrimeNG 等都不允许这样做,所以我怀疑它是否会实现。