Skip to content

Instantly share code, notes, and snippets.

@aquam8
Forked from sukima/application.js
Created October 16, 2010 17:30
Show Gist options
  • Save aquam8/630057 to your computer and use it in GitHub Desktop.
Save aquam8/630057 to your computer and use it in GitHub Desktop.
#
# This is using gem called simple_form by Jose Valim, but it can work with normal Rails calendar_select form inputs
#
<form....>
<%= f.input :target_date, :input_html => {:rel => '{"changeYear":true, "changeMonth":true, "minDate":"+1D", "maxDate":"+12M"}'} %>
</form>
/**
* Shamlessly copied from http://snipt.net/boriscy/datetime-jquery-formtastic/
*
* This did not function with formtastic version 0.9.10
* I had to move the live("change") event below the initializing part
* I also had to adjust the jQuery selections as formtastic uses <ol>'s to
* seperate every select box.
*/
$(document).ready(function() {
// Define the dateFormat for the datepicker
$.datepicker._defaults.dateFormat = 'dd M yy';
/**
* Replaces the date or datetime field with jquey-ui datepicker
*/
$('.date, .datetime').each(function(i, el) {
var input = document.createElement('input');
$(input).attr({'type': 'text', 'class': 'ui-date-text'});
// Insert the input:text before the first select
$(el).find("select:first").before(input);
$(el).find("select:lt(3)").hide();
// Set the input with the value of the selects
var values = [];
$(el).find("select:lt(3)").each(function(i, el) {
var val = $(el).val();
if(val != '')
values.push(val);
});
if( values.length > 1) {
d = new Date(values[0], parseInt(values[1]) - 1, values[2]);
$(input).val( $.datepicker.formatDate($.datepicker._defaults.dateFormat, d) );
}
$(input).datepicker( jQuery.parseJSON($(el).find("select:first").attr('rel')) );
});
/**
* Sets the date for each select with the date selected with datepicker
*/
$('input.ui-date-text').live("change", function() {
var sels = $(this).closest('.date, .datetime').find("select:lt(3)");
var d = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $(this).val() );
$(sels[0]).val(d.getFullYear());
$(sels[1]).val(d.getMonth() + 1);
$(sels[2]).val(d.getDate());
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment