aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Nagel <info@felixnagel.com>2016-08-18 00:15:29 +0200
committerScott González <scott.gonzalez@gmail.com>2016-08-24 11:56:26 -0400
commitac9ca9e52c90da56b6846501800103605467f98b (patch)
tree655c277fdc5faa166742a659f2def38d249bc8b0
parent1148aefd597ef465800622d57eae4a71b6fce85b (diff)
downloadjquery-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.js46
-rw-r--r--ui/widgets/menu.js5
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 ) {