dateField

by Eric Miller

HTML

<div class="dateField form-group" id="field_cc4536db_form_group">
  <input id="field_cc4536db_ISO" name="reportEndDate_ISO" type="hidden" value="20160119" data-noseparator="true">
  <input class="form-control date size-10 hasDatepicker" id="field_cc4536db" name="reportEndDate" type="text" data-field="field_cc4536db_ISO" data-format="mm/dd/yyyy" value="01/22/2016" data-noseparator="true">
  <button type="button" class="ui-datepicker-trigger"><i class="fa fa-calendar">Cal</i></button>
</div>

JavaScript

/**
 * DateField Web Control
 * @param {object} - Object to be evaluated as a datefield
 * @param {object} - Options to be evaluated as overrides for default behavior
 * @return {object}
 */
function DateField(obj, opt) {
  var $obj = $(obj),
    default_opt = {
      separator: '/',
      localFormat: 'mm/dd/yyyy',
      isoSeparator: ''
    },
    opt = opt || default_opt,
    api = {

      getLocalFormat: function() {
        return opt.localFormat || default_opt.localFormat;
      },

      /**
       * Get Local Date Separator from Options or Default Values
       */
      getLocalDateSeperator: function() {
        return opt.separator || default_opt.separator;
      },

      getISODateSeperator: function() {
        return opt.isoSeparator || default_opt.isoSeparator
      },

      /**
       * Parse local date string into parts (month, day, year)
       * @params {string} - Local date to be evaluated
       * @returns {object}
       */
      getLocalDateStringParts: function(ldateString, format) {
        var parts, f, month, day, year,
          format = format || api.getLocalFormat(),
          seperator = /[^mdy]/.exec(format)[0],
          theFormat = format.split(seperator),
          theDate = ldateString.split(seperator),
          m = [],
          d = [],
          y = [];
        for (i; i < format.lenght; i++) {
          f = format[i];
          if (/m/.test(f)) m.push(date[i]);
          if (/d/.test(f)) d.push(date[i]);
          if (/y/.test(f)) y.push(date[i]);
        }

        month = m.join('');
        day = d.join('');
        year = y.join('');

        return {
          month: month,
          day: day,
          year: year
        };
      },

      /**
       * Format Local Date String if does not contain seprator
       * @param {string} - Local Date string to be evaluated
       * @return {string}
       */
      formatLocalDateString: function(ldateString) {
        var seperator = api.getLocalDateSeperator(),
         ...