From ac9ca9e52c90da56b6846501800103605467f98b Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Thu, 18 Aug 2016 00:15:29 +0200 Subject: [PATCH] Menu: Support number pad keyboard input Fixes #15031 Closes gh-1732 --- tests/unit/selectmenu/core.js | 46 +++++++++++++++++++++++------------ 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 ) { -- 2.39.5