Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.552
diff -u -p -r1.552 book.module
--- modules/book/book.module	9 Sep 2010 23:01:48 -0000	1.552
+++ modules/book/book.module	19 Sep 2010 19:44:16 -0000
@@ -380,7 +380,7 @@ function book_get_books() {
  *
  * Adds the book fieldset to the node form.
  *
- * @see book_pick_book_nojs_submit()
+ * @see book_pick_book_submit()
  */
 function book_form_node_form_alter(&$form, &$form_state, $form_id) {
   $node = $form['#node'];
@@ -400,7 +400,7 @@ function book_form_node_form_alter(&$for
     $form['book']['pick-book'] = array(
       '#type' => 'submit',
       '#value' => t('Change book (update list of parents)'),
-      '#submit' => array('book_pick_book_nojs_submit'),
+      '#submit' => array('book_pick_book_submit'),
       '#weight' => 20,
     );
   }
@@ -408,16 +408,8 @@ function book_form_node_form_alter(&$for
 
 /**
  * Submit handler to change a node's book.
- *
- * This handler is run when JavaScript is disabled. It triggers the form to
- * rebuild so that the "Parent item" options are changed to reflect the newly
- * selected book. When JavaScript is enabled, the submit button that triggers
- * this handler is hidden, and the "Book" dropdown directly triggers the
- * book_form_update() AJAX callback instead.
- *
- * @see book_form_update()
  */
-function book_pick_book_nojs_submit($form, &$form_state) {
+function book_pick_book_submit($form, &$form_state) {
   $form_state['node']->book = $form_state['values']['book'];
   $form_state['rebuild'] = TRUE;
 }
@@ -473,12 +465,6 @@ function _book_parent_select($book_link)
  * Build the common elements of the book form for the node and outline forms.
  */
 function _book_add_form_elements(&$form, &$form_state, $node) {
-  // If the form is being processed during the AJAX callback of our book bid
-  // dropdown, then $form_state will hold the value that was selected.
-  if (isset($form_state['values']['book'])) {
-    $node->book = $form_state['values']['book'];
-  }
-
   $form['book'] = array(
     '#type' => 'fieldset',
     '#title' => t('Book outline'),
@@ -547,6 +533,9 @@ function _book_add_form_elements(&$form,
       'effect' => 'fade',
       'speed' => 'fast',
     ),
+    '#executes_submit_callback' => TRUE,
+    '#submit' => array('book_pick_book_submit'),
+    '#limit_validation_errors' => array(array('book')),
   );
 }
 
