2016-08-04 3 views
0

Ich verwende die Bootstrap Date picker control, um die Auswahl einer beliebigen Anzahl von Stunden zu ermöglichen. So könnte beispielsweise ein Benutzer irgendwo zwischen 1 -> 50 hours.Wie kann Bootstrap DatePicker überschrieben werden, um beliebige Stunden auszuwählen?

auswählen. In der aktuellen Einstellung habe ich die Formatoption so eingestellt, dass nur die Stundenauswahl mit format: 'HH' möglich ist, aber dies begrenzt die maximale Stundenauswahl auf 23 Stunden.

Frage Weiß jemand, wie man die Standardstundenauswahlwerte auf einem Bootstrap Date Picker außer Kraft setzt?

Im folgenden Datumsauswahl eine Stunde größer als 23 setzt den Picker auf 0 Auswählen:

enter image description here

Dies ist die Erklärung des Datumsauswahl im Skript und Optionen:

//Init the Next Update arbitrary hour picker 
    $(function() { 
     $('#NextUpdateDisplay').datetimepicker({ 
      ignoreReadonly: true, 
      allowInputToggle: true, 
      format: 'HH', 
      widgetPositioning: { 
       horizontal: 'right', 
       vertical: 'bottom' 
      } 
     }); 
    }); 
+0

es ist ein Standard-Datum-Uhrzeit-Picker daher zeigt es Standard-Datum und Uhrzeit-Format und seine Auswahl. Da Sie eine völlig andere Zahlenauswahl wünschen, verwenden Sie einfach die Datumsauswahl mit einem separaten Dropdown-Menü, das den gewünschten Stundenwert anzeigt. – vijayP

Antwort

1

In Bootstrap.timepicker.js finden Sie diese Zeile:

`this.hour >= 24 ? this.hour = 23` 

Änderung es zu:

`this.hour >= 51 ? this.hour = 50` 

Stellen Sie sicher, dass, wenn Sie Ihre timepicker instanziiert, Sie showMeridian = false als Option verwenden:

$(".timepicker").timepicker({ 
    showMeridian: false 
}); 

EDIT: Wenn Sie andere Kalenderwerkzeug wollen, normal sein:

  • Kopieren Sie TimePicker auf ein neues Objekt TimePickerEx,
  • außer Kraft setzen die Funktionen, die Sie (wollen schön Object.create(),
  • yeilding mit getan werden kann:

    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); 
        }, 
        }); 
    } 
    

zu verwenden:

var timePickerEx = TimePickerEx(); 

und ein normales TimePicker verwenden für den Rest.

+0

Was ist, wenn Sie diese Funktionalität nur für einen DateTime-Picker in der Ansicht haben möchten? Der Rest sollte die Standardstunde angezeigt haben? –

+0

@BrianJ Siehe Aktualisierung. –

Verwandte Themen