This is because on form error the form comes out of the cache table and skips fetching the form and all its _alter&#39;s. The &#39;best&#39; practice I have found is to use a #pre_render function to drupal_add_js(). pre_render&#39;s are called always.<div>
&lt;?php</div><div>function my_form_alter() {</div><div>  // add my elements</div><div>  $form[&#39;#pre_render&#39;][] = &#39;my_load_js&#39;;</div><div>}</div><div>?&gt;</div><div><br></div><div>&lt;?php</div><div>function my_load_js($form) {</div>
<div>  drupal_add_js();</div><div>  return $form;</div><div>}</div><div>?&gt;<br clear="all"><br>-- <br>Scott Reynolds<br>
</div>