Skip to content

Commit 924e80e

Browse files
committed
Spinner: Handle changes to numberFormat and currency options.
1 parent 97bc2d9 commit 924e80e

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

demos/spinner/currency.html

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717
<script>
1818
$(function() {
1919
$( "#currency" ).change(function() {
20-
var current = $( "#spinner" ).spinner( "value" );
21-
Globalize.culture( $(this).val() );
22-
$( "#spinner" ).spinner( "value", current );
20+
$( "#spinner" ).spinner( "option", "culture", $( this ).val() );
2321
});
2422

2523
$( "#spinner" ).spinner({

tests/unit/spinner/spinner_options.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,14 @@ test( "numberFormat, currency", function() {
9696
equal( element.val(), "$1.00", "formatted after step" );
9797
});
9898

99+
test( "numberFormat, change", function() {
100+
expect( 2 );
101+
var element = $( "#spin" ).val( 5 ).spinner({ numberFormat: "n1" });
102+
equal( element.val(), "5.0", "formatted on init" );
103+
element.spinner( "option", "numberFormat", "c" );
104+
equal( element.val(), "$5.00", "formatted after change" );
105+
});
106+
99107
test( "culture, null", function() {
100108
expect( 2 );
101109
Globalize.culture( "ja-JP" );
@@ -119,6 +127,17 @@ test( "currency, ja-JP", function() {
119127
equal( element.val(), "¥1", "formatted after step" );
120128
});
121129

130+
test( "currency, change", function() {
131+
expect( 2 );
132+
var element = $( "#spin" ).val( 5 ).spinner({
133+
numberFormat: "C",
134+
culture: "ja-JP"
135+
});
136+
equal( element.val(), "¥5", "formatted on init" );
137+
element.spinner( "option", "culture", "en" );
138+
equal( element.val(), "$5.00", "formatted after change" );
139+
});
140+
122141
test( "max", function() {
123142
expect( 3 );
124143
var element = $( "#spin" ).val( 1000 ).spinner({ max: 100 });

ui/jquery.ui.spinner.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,13 @@ $.widget( "ui.spinner", {
311311
},
312312

313313
_setOption: function( key, value ) {
314+
if ( key === "culture" || key === "numberFormat" ) {
315+
var prevValue = this._parse( this.element.val() );
316+
this.options[ key ] = value;
317+
this.element.val( this._format( prevValue ) );
318+
return;
319+
}
320+
314321
this._super( "_setOption", key, value );
315322

316323
if ( key === "disabled" ) {

0 commit comments

Comments
 (0)