aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTJ VanToll <tj.vantoll@gmail.com>2013-11-21 09:03:08 -0500
committerScott González <scott.gonzalez@gmail.com>2015-01-29 17:47:48 -0500
commite87a5d8c0520e64cadbe5903b9ef803f526e698d (patch)
tree7e89f113c03fc3f8fc105bfca34d395410bed484
parentcc5a4bc5c88a682b862e0db1a44a9ecd40900c1c (diff)
downloadjquery-ui-e87a5d8c0520e64cadbe5903b9ef803f526e698d.tar.gz
jquery-ui-e87a5d8c0520e64cadbe5903b9ef803f526e698d.zip
Datepicker: Add `value()` and `valueAsDate()` methods
-rw-r--r--tests/unit/datepicker/datepicker_methods.js46
-rw-r--r--ui/datepicker.js21
2 files changed, 66 insertions, 1 deletions
diff --git a/tests/unit/datepicker/datepicker_methods.js b/tests/unit/datepicker/datepicker_methods.js
index e204b8045..dcd6dc2c7 100644
--- a/tests/unit/datepicker/datepicker_methods.js
+++ b/tests/unit/datepicker/datepicker_methods.js
@@ -64,7 +64,51 @@ test( "open", function() {
});
test( "value", function() {
- expect( 0 );
+ expect( 5 );
+ var input = $( "#datepicker" ).datepicker(),
+ picker = input.datepicker( "widget" ),
+ inline = $( "#inline" ).datepicker();
+
+ input.datepicker( "value", "1/1/2014" );
+ equal( input.val(), "1/1/2014", "input's value set" );
+ ok( picker.find( "a[data-timestamp]:first" ).hasClass( "ui-state-focus" ),
+ "first day marked as selected" );
+ equal( input.datepicker( "value" ), "1/1/2014", "getter" );
+
+ inline.datepicker( "value", "1/1/2014" );
+ ok( inline.find( "a[data-timestamp]:first" ).hasClass( "ui-state-focus" ),
+ "first day marked as selected" );
+ equal( inline.datepicker( "value" ), "1/1/2014", "getter" );
+
+ // TODO: Handle for invalid values.
+
+ input.datepicker( "destroy" );
+ inline.datepicker( "destroy" );
+});
+
+test( "valueAsDate", function() {
+ expect( 5 );
+ var input = $( "#datepicker" ).datepicker(),
+ picker = input.datepicker( "widget" ),
+ inline = $( "#inline" ).datepicker();
+
+ input.datepicker( "valueAsDate", new Date( 2014, 0, 1 ) );
+ equal( input.val(), "1/1/2014", "input's value set" );
+ ok( picker.find( "a[data-timestamp]:first" ).hasClass( "ui-state-focus" ),
+ "first day marked as selected" );
+ TestHelpers.datepicker.equalsDate( input.datepicker( "valueAsDate" ),
+ new Date( 2014, 0, 1 ), "getter" );
+
+ inline.datepicker( "valueAsDate", new Date( 2014, 0, 1 ) );
+ ok( inline.find( "a[data-timestamp]:first" ).hasClass( "ui-state-focus" ),
+ "first day marked as selected" );
+ TestHelpers.datepicker.equalsDate( inline.datepicker( "valueAsDate" ),
+ new Date( 2014, 0, 1 ), "getter" );
+
+ // TODO: Handle for invalid values.
+
+ input.datepicker( "destroy" );
+ inline.datepicker( "destroy" );
});
})( jQuery );
diff --git a/ui/datepicker.js b/ui/datepicker.js
index 9d8813a29..425e81a72 100644
--- a/ui/datepicker.js
+++ b/ui/datepicker.js
@@ -609,6 +609,27 @@ $.widget( "ui.datepicker", {
date: this.date.format()
});
},
+ _value: function( value ) {
+ this.date.setTime( value ).select();
+ if ( !this.inline ) {
+ this.element.val( this.date.format() );
+ }
+ this.refresh();
+ },
+ value: function( value ) {
+ if ( arguments.length ) {
+ this._value( value );
+ } else {
+ return this.date.format();
+ }
+ },
+ valueAsDate: function( value ) {
+ if ( arguments.length ) {
+ this._value( value );
+ } else {
+ return this.date.date();
+ }
+ },
_destroy: function() {
if ( this.inline ) {
this.picker.empty();