diff -u b/includes/ajax.inc b/includes/ajax.inc --- b/includes/ajax.inc +++ b/includes/ajax.inc @@ -144,18 +144,20 @@ * selected automatically for the type of form widget being used, and * is only needed if you need to override the default behavior. * - #ajax['prevent']: A JavaScript event to prevent when 'event' is triggered. - * When binding #ajax behaviors to form buttons, pressing the ENTER key within - * a textfield triggers the click event of the form's first submit button. - * Triggering Ajax in this situation leads to problems, like breaking - * autocomplete textfields. Because of that, #ajax behaviors are bound to the - * mousedown event on form buttons by default. However, binding to mousedown - * rather than click means that it is possible to trigger a click by pressing - * the mouse, holding the mouse button down until the Ajax request is complete - * and the button is re-enabled, and then releasing the mouse button. For this - * case, 'prevent' can be set to 'click', so an additional handler is bound to - * prevent such a click from triggering a non-Ajax form submission. This also - * prevents a textfield's ENTER press triggering a button's non-Ajax form - * submission behavior. + * Defaults to 'click' for #ajax on #type 'submit', 'button', and + * 'image_button'. Multiple events may be specified separated by spaces. + * For example, when binding #ajax behaviors to form buttons, pressing the + * ENTER key within a textfield triggers the 'click' event of the form's first + * submit button. Triggering Ajax in this situation leads to problems, like + * breaking autocomplete textfields. Because of that, Ajax behaviors are bound + * to the 'mousedown' event on form buttons by default. However, binding to + * 'mousedown' rather than 'click' means that it is possible to trigger a + * click by pressing the mouse, holding the mouse button down until the Ajax + * request is complete and the button is re-enabled, and then releasing the + * mouse button. For this case, 'prevent' can be set to 'click', so an + * additional event handler is bound to prevent such a click from triggering a + * non-Ajax form submission. This also prevents a textfield's ENTER press + * triggering a button's non-Ajax form submission behavior. * - #ajax['method']: The jQuery method to use to place the new HTML. * Defaults to 'replaceWith'. May be: 'replaceWith', 'append', 'prepend', * 'before', 'after', or 'html'. See the @@ -650,7 +652,9 @@ // an additional handler to prevent such a click from triggering a // non-Ajax form submission. This also prevents a textfield's ENTER // press triggering this button's non-Ajax form submission behavior. - $element['#ajax']['prevent'] = 'click'; + if (!isset($element['#ajax']['prevent'])) { + $element['#ajax']['prevent'] = 'click'; + } break; case 'password':