From 13d9e0b0f8ce89ac313cbe19d0d56b7d445d1555 Mon Sep 17 00:00:00 2001
From: Angie Byron <webchick@24967.no-reply.drupal.org>
Date: Tue, 21 Dec 2010 04:21:16 +0000
Subject: [PATCH] #995122 by threewestwinds, rfay: Allow textareas and
 textfields to accept spaces in ajax.

---
 misc/ajax.js | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/misc/ajax.js b/misc/ajax.js
index 4672e3eb30ba..57a16048e7ea 100644
--- a/misc/ajax.js
+++ b/misc/ajax.js
@@ -195,13 +195,19 @@ Drupal.ajax = function (base, element, element_settings) {
  * The AJAX object will, if instructed, bind to a key press response. This
  * will test to see if the key press is valid to trigger this event and
  * if it is, trigger it for us and prevent other keypresses from triggering.
+ * In this case we're handling RETURN and SPACEBAR keypresses (event codes 13
+ * and 32. RETURN is often used to submit a form when in a textfield, and 
+ * SPACE is often used to activate an element without submitting. 
  */
 Drupal.ajax.prototype.keypressResponse = function (element, event) {
   // Create a synonym for this to reduce code confusion.
   var ajax = this;
 
-  // Detect enter key and space bar.
-  if (event.which == 13 || event.which == 32) {
+  // Detect enter key and space bar and allow the standard response for them,
+  // except for form elements of type 'text' and 'textarea', where the 
+  // spacebar activation causes inappropriate activation if #ajax['keypress'] is 
+  // TRUE. On a text-type widget a space should always be a space.
+  if (event.which == 13 || (event.which == 32 && element.type != 'text' && element.type != 'textarea')) {
     $(ajax.element_settings.element).trigger(ajax.element_settings.event);
     return false;
   }
-- 
GitLab