Google Calendar Like jQuery Time Picker Plugin - Timepicker.js

File Size: 40.8 KB
Views Total: 7146
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   
Google Calendar Like jQuery Time Picker Plugin - Timepicker.js

Yet another jQuery time picker plugin which creates a simple highly customizable, Google Calendar inspired timer picker for easier time selection.

Features:

  • Lightweight and easy to customize.
  • Can be bound to any DOM element.
  • Can render itself as a select element
  • Custom time range, step and format.
  • Supports duration selection.
  • Compatible with jQuery Datepair plugin.
  • Keyboard navigation.
  • Lots of customization options and API.
  • Cross browser and mobile friendly.

Basic usage:

1. Include jquery.timepicker.css inside your head tag and jquery.timepicker.js after jQuery library but before the closing body tag.

<link href="jquery.timepicker.css" rel="stylesheet">
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="jquery.timepicker.js"></script>

2. Create a text input field for the time picker.

<input id="basic" type="text">

3. Initialize the time picker and we're ready to go.

$('#basic').timepicker();

4. All configuration options with default values.

$('#basic').timepicker({

  // where the timepicker is appended
  appendTo: 'body',

  // additional CSS class
  className: null,

  // close the time picker on scroll
  closeOnWindowScroll: false,

  // disable text input
  disableTextInput: false,

  // disable time ranges
  disableTimeRanges: [],

  // disable onscreen keyboard for touch devices
  disableTouchKeyboard: false,

  // the time against which showDuration will compute relative times. 
  // if this is a function, its result will be used.
  durationTime: null,

  // force update the time to step settings as soon as it loses focus.
  forceRoundTime: false,

  // min / max time
  maxTime: null,
  minTime: null,

  // Adds a "None" option that results in an empty input value
  noneOption: false,

  // l (left), r (right), t (top), and b (bottom)
  orientation: 'l',

  // Function used to compute rounded times. 
  roundingFunction: function(seconds, settings) {
    if (seconds === null) {
      return null;
    } else {
      var offset = seconds % (settings.step*60); // step is in minutes

      if (offset >= settings.step*30) {
        // if offset is larger than a half step, round up
        seconds += (settings.step*60) - offset;
      } else {
        // round down
        seconds -= offset;
      }

      return seconds;
    }
  },

  // if no time value is selected, set the dropdown scroll position to show the time provided, e.g. "09:00". 
  // a time string, Date object, or integer (seconds past midnight) is acceptible, as well as the string 'now'.
  scrollDefault: null,

  // update the input with the currently highlighted time value when the timepicker loses focus.
  selectOnBlur: false,

  // show "24:00" as an option when using 24-hour time format.
  show2400: false,

  // show the relative time for each item in the dropdown
  showDuration: false,

  // display a timepicker dropdown when the input fires a particular event. 
  // set to null or an empty array to disable automatic display. 
  // setting should be an array of strings. 
  showOn: ['click', 'focus'],

  // display a timepicker dropdown when the input gains focus.
  showOnFocus: true,

  // The amount of time, in minutes, between each item in the time picker.
  step: 30,

  // When scrolling on the edge of the time picker, it prevent parent containers () to scroll.
  stopScrollPropagation: false,

  // custom time format
  // uses PHP's date() formatting syntax.
  timeFormat: 'g:ia',

  // highlight the nearest corresponding time option as a value is typed into the form input.
  typeaheadHighlight: true,

  // convert the input to an HTML <SELECT> control. 
  useSelect: false

});

5. Public methods.

// Get the time as an integer, expressed as seconds from 12am.
$('#el').timepicker('getSecondsFromMidnight');

// Get the time using a Javascript Date object, relative to a Date object (default: Jan 1, 1970).
$('#el').timepicker('getTime');
$('#el').timepicker('getTime', new Date());

// Hide the time picker
$('#el').timepicker('hide');

// Remove the time picker
$('#el').timepicker('remove');

// Set the time using a Javascript Date object.
$('#el').timepicker('setTime', new Date());

// Display the time picker.
$('#el').timepicker('show');

6. Events.

// fire any time the input value is updated
$('#el').on('change', function() {
  // do something
});

// called after a valid time value is entered or selected. 
// see timeFormatError and timeRangeError for error events.
// fires before change event.
$('#el').on('changeTime', function() {
  // do something
});

// called after the timepicker is closed.
$('#el').on('hideTimepicker', function() {
  // do something
});

// called after a time value is selected from the timepicker list. 
// fires before change event.
$('#el').on('selectTime', function() {
  // do something
});

// called after the timepicker is shown.
$('#el').on('showTimepicker', function() {
  // do something
});

// called if an unparseable time string is manually entered into the timepicker input. 
// fires before change event.
$('#el').on('timeFormatError', function() {
  // do something
});


// called if a maxTime, minTime, or disableTimeRanges is set and an invalid time is manually entered into the timepicker input.
// fires before change event.
$('#el').on('timeRangeErrorr', function() {
  // do something
});

This awesome jQuery plugin is developed by cdsosa. For more Advanced Usages, please check the demo page or visit the official website.