Php hook_form_form_ID_alter未在'之后调用;提交';或';预览';点击

Php hook_form_form_ID_alter未在'之后调用;提交';或';预览';点击,php,drupal,Php,Drupal,在自定义模块中,我有以下内容(将javascript添加到特定表单): 此函数在表单首次加载(即浏览到)时调用,但在表单无效后重新加载相同表单时(即单击“提交”或“预览”后缺少必填字段),不会调用此php函数 单击“提交”或“预览”后,我需要做什么才能添加javascript文件 谢谢 John要解决您的问题,您需要为表单创建一个主题函数,在其中呈现表单并添加js文件。只有在构建表单时才会调用form alter。由于表单在请求之间缓存,所以在提交和预览时使用相同且已生成的表单 您需要确定每次呈

在自定义模块中,我有以下内容(将javascript添加到特定表单):

此函数在表单首次加载(即浏览到)时调用,但在表单无效后重新加载相同表单时(即单击“提交”或“预览”后缺少必填字段),不会调用此php函数

单击“提交”或“预览”后,我需要做什么才能添加javascript文件

谢谢


John

要解决您的问题,您需要为表单创建一个主题函数,在其中呈现表单并添加js文件。

只有在构建表单时才会调用form alter。由于表单在请求之间缓存,所以在提交和预览时使用相同且已生成的表单

您需要确定每次呈现表单时是否调用了代码。正如googletorp所指出的那样,一种方法是。您也可以通过在窗体上附加或函数来完成此操作。实际上,自定义、预渲染或后渲染功能不需要用于表单本身,可以用于任何表单元素。最好是通过JavaScript改变行为的脚本

function mymodule_form_mynode_node_form_alter(&$form, $form_state) {
  drupal_add_js(drupal_get_path('module', 'mymodule') . '/js/mymodule.js', 'module');
}