Does #AJAX work on the body field? Does the #AJAX FAPI property work on the body field? I've got it to work with things like submit buttons and textfields such as the title. When I alter the node edit form, and attach an #ajax array to the body field though, nothing happens. I've tried multiple event types (keyup, keypress, focus). Is there anything special that needs to be done to get #ajax to work on the body field?

  // This works (creates backend xhr call).      
  $form['title']['#ajax'] = array(
    'wrapper' =&gt; 'autopreview',
    'callback' =&gt; 'autopreview_ajax_callback',
    'method' =&gt; 'replace',
    'event' =&gt; 'focus',
  );

  // Doesn't work.
  $form['body']['#ajax'] = array(
    'wrapper' =&gt; 'autopreview',
    'callback' =&gt; 'autopreview_ajax_callback',
    // 'method' =&gt; 'replace',
    'event' =&gt; 'focus',
  );

  // Doesn't work.
  $form['body']['und'][0]['#ajax'] = array(
    'wrapper' =&gt; 'autopreview',
    'callback' =&gt; 'autopreview_ajax_callback',
    'method' =&gt; 'replace',
    'event' =&gt; 'focus',
  );
According to the FAPI docs textareas do support #ajax, yes.

I'd imagine the problem is because you'll be using a WYSIWYG editor on that field. Such an editor will replace the textarea with an iFrame, and the AJAX events aren't bound to that iFrame (or its inner textarea), so won't get fired when you change the text.

If that is the case, I don't think there's any easy way to overcome the problem except to turn of the WYSIWYG editor for that field.