Showing with 19 additions and 3 deletions.
  1. +9 −0 js/widgets/filterable.js
  2. +10 −3 tests/unit/filterable/filterable_core.js
@@ -162,6 +162,7 @@ $.widget( "mobile.filterable", {

this._on( search, {
keydown: "_onKeyDown",
keypress: "_onKeyPress",
keyup: "_onKeyUp",
change: "_onKeyUp",
input: "_onKeyUp"
@@ -175,6 +176,14 @@ $.widget( "mobile.filterable", {
_onKeyDown: function( event ) {
if ( event.keyCode === $.ui.keyCode.ENTER ) {
event.preventDefault();
this._preventKeyPress = true;
}
},

_onKeyPress: function( event ) {
if ( this._preventKeyPress ) {
event.preventDefault();
this._preventKeyPress = false;
}
},

@@ -11,13 +11,20 @@ test( "Listview with filter has hideDividers option set to true", function() {
});

test( "Filterable input prevents default on ENTER", function() {
var event = $.Event( "keydown" );
var event = $.Event( "keydown" ),
input = $( "#test-input-preventDefault" );

event.keyCode = $.ui.keyCode.ENTER;

$( "#test-input-preventDefault" ).trigger( event );
input.trigger( event );

deepEqual( event.isDefaultPrevented(), true, "Keydown for ENTER default is prevented" );
deepEqual( event.isDefaultPrevented(), true, "keydown for ENTER default is prevented" );

event = $.Event( "keypress" );

input.trigger( event );

deepEqual( event.isDefaultPrevented(), true, "Subsequent keypress default is also prevented" );
});

})( jQuery );