aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2013-09-16 11:58:05 -0400
committerScott González <scott.gonzalez@gmail.com>2013-09-16 11:58:05 -0400
commit134fcafddac25b8e81160718fec59c39e7c76c59 (patch)
treed76227f0a11d24b1e72f7dfb294c89e2251e553b
parentbdfe7196a2b14d0970de30fe5cb6a45bc87e0b93 (diff)
parentd13df39e39010bb7cf2cec11b5206e85ea5fca2a (diff)
downloadjquery-ui-134fcafddac25b8e81160718fec59c39e7c76c59.tar.gz
jquery-ui-134fcafddac25b8e81160718fec59c39e7c76c59.zip
Merge branch 'master' into selectmenu
-rw-r--r--AUTHORS.txt2
-rw-r--r--tests/unit/spinner/spinner_methods.js32
-rw-r--r--tests/unit/widget/widget_core.js13
-rw-r--r--ui/jquery.ui.spinner.js12
-rw-r--r--ui/jquery.ui.widget.js13
5 files changed, 67 insertions, 5 deletions
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 6817f2308..b39a038c7 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -226,7 +226,7 @@ Anika Henke <anika@selfthinker.org>
Samuel Bovée <samycookie2000@yahoo.fr>
Fabrício Matté <ult_combo@hotmail.com>
Viktor Kojouharov <vkojouharov@gmail.com>
-Pawel Maruszczyk <lord_t@o2.pl>
+Pawel Maruszczyk (http://hrabstwo.net)
Pavel Selitskas <p.selitskas@gmail.com>
Bjørn Johansen <bjorn.johansen@metronet.no>
Matthieu Penant <thieum22@hotmail.com>
diff --git a/tests/unit/spinner/spinner_methods.js b/tests/unit/spinner/spinner_methods.js
index 4f44a73ae..41c991be3 100644
--- a/tests/unit/spinner/spinner_methods.js
+++ b/tests/unit/spinner/spinner_methods.js
@@ -73,6 +73,38 @@ test( "enable", function() {
equal( 2, element.val(), "keyboard - value changes on key UP" );
});
+test( "isValid", function() {
+ expect( 8 );
+ var element = $( "#spin" ).spinner({
+ min: 0,
+ max: 10,
+ step: 2
+ }),
+ spinner = element.spinner( "instance" );
+ ok( !spinner.isValid(), "initial state is invalid" );
+
+ element.val( "this is not a number" );
+ ok( !spinner.isValid(), "text string is not valid" );
+
+ element.val( "0" );
+ ok( spinner.isValid(), "min value is valid" );
+
+ element.val( "10" );
+ ok( spinner.isValid(), "max value is valid" );
+
+ element.val( "4" );
+ ok( spinner.isValid(), "inbetween step is valid" );
+
+ element.val( "-1" );
+ ok( !spinner.isValid(), "below min is invalid" );
+
+ element.val( "11" );
+ ok( !spinner.isValid(), "above max is invalid" );
+
+ element.val( "1" );
+ ok( !spinner.isValid(), "step mismatch is invalid" );
+});
+
test( "pageDown", function() {
expect( 4 );
var element = $( "#spin" ).val( -12 ).spinner({
diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js
index 3db79ec06..ec4c85874 100644
--- a/tests/unit/widget/widget_core.js
+++ b/tests/unit/widget/widget_core.js
@@ -1409,7 +1409,7 @@ asyncTest( "_delay", function() {
});
test( "$.widget.bridge()", function() {
- expect( 10 );
+ expect( 14 );
var instance, ret,
elem = $( "<div>" );
@@ -1427,6 +1427,9 @@ test( "$.widget.bridge()", function() {
},
getter: function() {
return "qux";
+ },
+ option: function( options ) {
+ deepEqual( options, {} );
}
});
@@ -1444,6 +1447,14 @@ test( "$.widget.bridge()", function() {
ret = elem.testWidget( "getter" );
equal( ret, "qux", "getter returns value" );
+
+ elem.testWidget();
+ ok( true, "_init is optional" );
+
+ TestWidget.prototype._init = function() {
+ ok( "_init", "_init now exists, so its called" );
+ };
+ elem.testWidget();
});
test( "$.widget.bridge() - widgetFullName", function() {
diff --git a/ui/jquery.ui.spinner.js b/ui/jquery.ui.spinner.js
index c022413dc..a4912fc7e 100644
--- a/ui/jquery.ui.spinner.js
+++ b/ui/jquery.ui.spinner.js
@@ -418,6 +418,18 @@ $.widget( "ui.spinner", {
});
},
+ isValid: function() {
+ var value = this.value();
+
+ // null is invalid
+ if ( value === null ) {
+ return false;
+ }
+
+ // if value gets adjusted, it's invalid
+ return value === this._adjustValue( value );
+ },
+
// update the value without triggering change
_value: function( value, allowAny ) {
var parsed;
diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js
index 885e2019f..a46dcaf99 100644
--- a/ui/jquery.ui.widget.js
+++ b/ui/jquery.ui.widget.js
@@ -203,7 +203,10 @@ $.widget.bridge = function( name, object ) {
this.each(function() {
var instance = $.data( this, fullName );
if ( instance ) {
- instance.option( options || {} )._init();
+ instance.option( options || {} );
+ if ( instance._init ) {
+ instance._init();
+ }
} else {
$.data( this, fullName, new object( options, this ) );
}
@@ -349,8 +352,12 @@ $.Widget.prototype = {
if ( key === "disabled" ) {
this.widget()
.toggleClass( this.widgetFullName + "-disabled", !!value );
- this.hoverable.removeClass( "ui-state-hover" );
- this.focusable.removeClass( "ui-state-focus" );
+
+ // If the widget is becoming disabled, then nothing is interactive
+ if ( value ) {
+ this.hoverable.removeClass( "ui-state-hover" );
+ this.focusable.removeClass( "ui-state-focus" );
+ }
}
return this;