我使用 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');
}
这将很难完成,因为很多内部日期选择器代码都以 60 秒、60 分钟等为单位进行转发。
多年来一直有公开票:https://github.com/primefaces/primefaces/issues/5551
您可能想对该问题进行投票,但请注意,其他 PrimeFaces 库 PrimeNG 等都不允许这样做,所以我怀疑它是否会被实现。