Jquery 如何覆盖引导日期选择器以允许任意时间选择?
我使用允许选择任意的小时数。例如,用户可以选择Jquery 如何覆盖引导日期选择器以允许任意时间选择?,jquery,twitter-bootstrap-3,bootstrap-datepicker,hour,Jquery,Twitter Bootstrap 3,Bootstrap Datepicker,Hour,我使用允许选择任意的小时数。例如,用户可以选择1->50小时之间的任何时间。 在当前设置中,我使用格式:“HH”将格式选项设置为仅允许小时选择,但这将最大小时选择限制为23小时 问题 有人知道如何覆盖引导日期选择器上的默认小时选择值吗 在下面的日期选择器中,选择大于23小时的时间将选择器重置为0: 这是脚本和选项中日期选择器的声明: //Init the Next Update arbitrary hour picker $(function () { $('#
1->50小时之间的任何时间。
在当前设置中,我使用格式:“HH”
将格式选项设置为仅允许小时选择,但这将最大小时选择限制为23小时
问题
有人知道如何覆盖引导日期选择器上的默认小时选择值吗
在下面的日期选择器中,选择大于23小时的时间将选择器重置为0:
这是脚本和选项中日期选择器的声明:
//Init the Next Update arbitrary hour picker
$(function () {
$('#NextUpdateDisplay').datetimepicker({
ignoreReadonly: true,
allowInputToggle: true,
format: 'HH',
widgetPositioning: {
horizontal: 'right',
vertical: 'bottom'
}
});
});
在
Bootstrap.timepicker.js
中,找到以下行:
`this.hour >= 24 ? this.hour = 23`
将其更改为:
`this.hour >= 51 ? this.hour = 50`
确保在实例化时间选择器时,使用showMeridian=false
作为选项:
$(".timepicker").timepicker({
showMeridian: false
});
编辑:如果希望其他日期选择器正常:
- 将
TimePicker
复制到新对象TimePickerEx
- 覆盖您想要的功能(可以使用
Object.create()
,
- Yeilding:
function TimePickerEx() {
return Object.create(TimePicker(), {
setTime: function(time, ignoreWidget) {
if (!time) {
this.clear();
return;
}
var timeArray,
hour,
minute,
second,
meridian;
if (typeof time === 'object' && time.getMonth){
// this is a date object
hour = time.getHours();
minute = time.getMinutes();
second = time.getSeconds();
if (this.showMeridian){
meridian = 'AM';
if (hour > 12){
meridian = 'PM';
hour = hour % 12;
}
if (hour === 12){
meridian = 'PM';
}
}
} else {
if (time.match(/p/i) !== null) {
meridian = 'PM';
} else {
meridian = 'AM';
}
time = time.replace(/[^0-9\:]/g, '');
timeArray = time.split(':');
hour = timeArray[0] ? timeArray[0].toString() : timeArray.toString();
minute = timeArray[1] ? timeArray[1].toString() : '';
second = timeArray[2] ? timeArray[2].toString() : '';
// idiot proofing
if (hour.length > 4) {
second = hour.substr(4, 2);
}
if (hour.length > 2) {
minute = hour.substr(2, 2);
hour = hour.substr(0, 2);
}
if (minute.length > 2) {
second = minute.substr(2, 2);
minute = minute.substr(0, 2);
}
if (second.length > 2) {
second = second.substr(2, 2);
}
hour = parseInt(hour, 10);
minute = parseInt(minute, 10);
second = parseInt(second, 10);
if (isNaN(hour)) {
hour = 0;
}
if (isNaN(minute)) {
minute = 0;
}
if (isNaN(second)) {
second = 0;
}
if (this.showMeridian) {
if (hour < 1) {
hour = 1;
} else if (hour > 12) {
hour = 12;
}
} else {
if (hour >= 51) {
hour = 50;
} else if (hour < 0) {
hour = 0;
}
if (hour < 13 && meridian === 'PM') {
hour = hour + 12;
}
}
if (minute < 0) {
minute = 0;
} else if (minute >= 60) {
minute = 59;
}
if (this.showSeconds) {
if (isNaN(second)) {
second = 0;
} else if (second < 0) {
second = 0;
} else if (second >= 60) {
second = 59;
}
}
}
this.hour = hour;
this.minute = minute;
this.second = second;
this.meridian = meridian;
this.update(ignoreWidget);
},
});
}
其余部分使用普通的时间选择器
。这是一个标准的日期时间选择器,因此它显示标准的日期和时间格式及其选择。如果您想要完全不同的数字选择,那么只需使用日期选择器,并使用单独的下拉列表显示所需的小时值。如果您只希望一个日期时间选择器具有此功能,该怎么办在视图上?其余部分应显示默认小时数?
var timePickerEx = TimePickerEx();