diff --git project.inc project.inc
index d59d9a4..9762c89 100644
--- project.inc
+++ project.inc
@@ -7,11 +7,10 @@
 function project_project_form($node, $form_state) {
   global $user;
   project_project_set_breadcrumb($node);
+  $form['#after_build'] = array('project_project_form_add_js');
 
   /* Project taxonomy */
   if (project_use_taxonomy()) {
-    // Since this form is used relatively infrequently, don't allow the js to be aggregated.
-    drupal_add_js(drupal_get_path('module', 'project') .'/project.js', 'module', 'header', FALSE, TRUE, FALSE);
     $project_type_vid = _project_get_vid();
     $tree = taxonomy_get_tree($project_type_vid);
     $top_level = array();
@@ -275,6 +274,17 @@ function project_project_form($node, $form_state) {
 }
 
 /**
+ * Add js out of project_project_form() because with the form cached
+ * the main form function isn't called again (and so js isn't loaded).
+ */
+function project_project_form_add_js($form, &$form_state) {
+  // Since this form is used relatively infrequently, don't allow the js to be aggregated.
+  drupal_add_js(drupal_get_path('module', 'project') .'/project.js', 'module', 'header', FALSE, TRUE, FALSE);
+
+  return $form;
+}
+
+/**
  * Implementation of hook_validate().
  *
  * @param $node
