diff options
author | Felix Nagel <info@felixnagel.com> | 2016-08-18 00:15:29 +0200 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2016-08-24 11:56:26 -0400 |
commit | ac9ca9e52c90da56b6846501800103605467f98b (patch) | |
tree | 655c277fdc5faa166742a659f2def38d249bc8b0 | |
parent | 1148aefd597ef465800622d57eae4a71b6fce85b (diff) | |
download | jquery-ui-ac9ca9e52c90da56b6846501800103605467f98b.tar.gz jquery-ui-ac9ca9e52c90da56b6846501800103605467f98b.zip |
Menu: Support number pad keyboard input
Fixes #15031
Closes gh-1732
-rw-r--r-- | tests/unit/selectmenu/core.js | 46 | ||||
-rw-r--r-- | ui/widgets/menu.js | 5 |
2 files changed, 35 insertions, 16 deletions
diff --git a/tests/unit/selectmenu/core.js b/tests/unit/selectmenu/core.js index 177d87283..a5bc68e0f 100644 --- a/tests/unit/selectmenu/core.js +++ b/tests/unit/selectmenu/core.js @@ -341,23 +341,39 @@ $.each( [ } ); } ); - QUnit.test( "Selectmenu should reset when its parent form resets", function( assert ) { - var ready = assert.async(); - assert.expect( 2 ); +QUnit.test( "Selectmenu should reset when its parent form resets", function( assert ) { + var ready = assert.async(); + assert.expect( 2 ); - var element = $( "#speed" ).selectmenu(), - widget = element.selectmenu( "widget" ), - initialValue = element.val(), - form = element.closest( "form" ); + var element = $( "#speed" ).selectmenu(), + widget = element.selectmenu( "widget" ), + initialValue = element.val(), + form = element.closest( "form" ); - element.val( "Slower" ); - element.selectmenu( "refresh" ); - assert.equal( $.trim( widget.text() ), "Slower" ); - form[ 0 ].reset(); - setTimeout( function() { - assert.equal( $.trim( widget.text() ), initialValue ); - ready(); - } ); + element.val( "Slower" ); + element.selectmenu( "refresh" ); + assert.equal( $.trim( widget.text() ), "Slower" ); + form[ 0 ].reset(); + setTimeout( function() { + assert.equal( $.trim( widget.text() ), initialValue ); + ready(); } ); +} ); + +QUnit.test( "Number pad input should change value", function( assert ) { + var ready = assert.async(); + assert.expect( 1 ); + + var element = $( "#number" ).selectmenu(), + button = element.selectmenu( "widget" ); + + button.simulate( "focus" ); + button.simulate( "keydown", { keyCode: 101 } ); + + setTimeout( function() { + assert.equal( element.val(), 5 ); + ready(); + } ); +} ); } ); diff --git a/ui/widgets/menu.js b/ui/widgets/menu.js index 73800506f..49da26865 100644 --- a/ui/widgets/menu.js +++ b/ui/widgets/menu.js @@ -236,9 +236,12 @@ return $.widget( "ui.menu", { default: preventDefault = false; prev = this.previousFilter || ""; - character = String.fromCharCode( event.keyCode ); skip = false; + // Support number pad values + character = event.keyCode >= 96 && event.keyCode <= 105 ? + ( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode ); + clearTimeout( this.filterTimer ); if ( character === prev ) { |