diff --git includes/ajax.inc includes/ajax.inc index 7ef41bc..371ebb2 100644 --- includes/ajax.inc +++ includes/ajax.inc @@ -587,12 +587,19 @@ function ajax_pre_render_element($element) { $element['#ajax']['event'] = 'blur'; break; - case 'radio': - case 'checkbox': case 'select': $element['#ajax']['event'] = 'change'; break; + // Note on 'change' versus 'click' events: Ideally we would fire an AJAX + // request for radios and checkboxes when they change, instead of every + // time they're clicked. Unfortunately, Internet Explorer doesn't fire + // change events correctly. For radio and checkbox elements, the change + // event fires only on blur (such as when the user clicks outside the form + // element). The workaround is to react on the click event instead of the + // change event. See http://www.quirksmode.org/dom/events/change.html#t04 + case 'radio': + case 'checkbox': case 'link': $element['#ajax']['event'] = 'click'; break;