Index: includes/form.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/form.inc,v retrieving revision 1.266 diff -u -r1.266 form.inc --- includes/form.inc 6 Feb 2008 19:38:26 -0000 1.266 +++ includes/form.inc 10 Feb 2008 06:26:01 -0000 @@ -1749,7 +1749,13 @@ case 'submit': case 'button': case 'image_button': - $element['#ahah']['event'] = 'click'; + // Use the mousedown instead of the click event because form + // submission via pressing the enter key triggers a click event on + // submit inputs, inappropriately triggering AHAH behaviors. + $element['#ahah']['event'] = 'mousedown'; + // Attach an additional event handler so that AHAH behaviours + // can be triggered still via keyboard input. + $element['#ahah']['keypress'] = TRUE; break; case 'password': case 'textfield': @@ -1773,6 +1779,7 @@ $ahah_binding = array( 'url' => url($element['#ahah']['path']), 'event' => $element['#ahah']['event'], + 'keypress' => empty($element['#ahah']['keypress']) ? NULL : $element['#ahah']['keypress'], 'wrapper' => empty($element['#ahah']['wrapper']) ? NULL : $element['#ahah']['wrapper'], 'selector' => empty($element['#ahah']['selector']) ? '#'. $element['#id'] : $element['#ahah']['selector'], 'effect' => empty($element['#ahah']['effect']) ? 'none' : $element['#ahah']['effect'], Index: misc/ahah.js =================================================================== RCS file: /cvs/drupal/drupal/misc/ahah.js,v retrieving revision 1.7 diff -u -r1.7 ahah.js --- misc/ahah.js 4 Jan 2008 11:53:21 -0000 1.7 +++ misc/ahah.js 10 Feb 2008 06:33:02 -0000 @@ -38,6 +38,7 @@ this.element = element_settings.element; this.selector = element_settings.selector; this.event = element_settings.event; + this.keypress = element_settings.keypress; this.url = element_settings.url; this.wrapper = '#'+ element_settings.wrapper; this.effect = element_settings.effect; @@ -98,6 +99,18 @@ $(element_settings.element).parents('form').ajaxSubmit(options); return false; }); + // If necessary, enable keyboard submission so that AHAH behaviors + // can be triggered through keyboard input as well as e.g. a mousedown + // action. + if (element_settings.keypress) { + $(element_settings.element).keypress(function(event) { + // Detect enter key. + if (event.keyCode == 13) { + $(element_settings.element).trigger(element_settings.event); + return false; + } + }); + } }; /**