From f13357dd168a51fe4f8072f8359d0c92e22bb601 Mon Sep 17 00:00:00 2001 From: imakewebthings Date: Fri, 13 Jul 2012 20:58:33 +0800 Subject: [PATCH] Prevent key capture within ALL editable elements, not just those within slides --- core/deck.core.js | 10 +++++----- test/spec.core.js | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/deck.core.js b/core/deck.core.js index 6fbeb5c..997942c 100644 --- a/core/deck.core.js +++ b/core/deck.core.js @@ -181,7 +181,10 @@ that use the API provided by core. methods.prev(); e.preventDefault(); } - }); + }) + /* Stop propagation of key events within editable elements */ + .undelegate('input, textarea, select, button, meter, progress, [contentEditable]', 'keydown', esp) + .delegate('input, textarea, select, button, meter, progress, [contentEditable]', 'keydown', esp); /* Bind touch events for swiping between slides on touch devices */ $container.unbind('touchstart.deck').bind('touchstart.deck', function(e) { @@ -212,10 +215,7 @@ that use the API provided by core. } }); }) - .scrollLeft(0).scrollTop(0) - /* Stop propagation of key events within editable elements of slides */ - .undelegate('input, textarea, select, button, meter, progress, [contentEditable]', 'keydown', esp) - .delegate('input, textarea, select, button, meter, progress, [contentEditable]', 'keydown', esp); + .scrollLeft(0).scrollTop(0); /* Kick iframe videos, which dont like to redraw w/ transforms. diff --git a/test/spec.core.js b/test/spec.core.js index 8ac4bed..9c7866a 100755 --- a/test/spec.core.js +++ b/test/spec.core.js @@ -231,10 +231,12 @@ describe('Deck JS', function() { }); it('should not trigger events that originate within editable elements', function() { + var $outside = $('').appendTo('body'); e = jQuery.Event('keydown'); e.which = 87; - $('.alt-slide1 input').trigger(e); + $outside.trigger(e); expect($.deck('getSlide')).toHaveClass('alt-slide1'); + $outside.remove(); }); }); });