捕获Drupal自动完成值/事件并根据发现的结果更改表单组件

问题描述

| 我不是AJAX,Drupal或javascript方面的专家,但我会尽力使我的问题尽可能清楚。 我在开发环境中的MysqL上运行drupal 7。我编写了自己的模块“ acid”来处理自定义自动完成功能 我正在为公司建立网站,以允许他们为所有网站添加客户满意度表格。在我的数据库中,我有一个\'acid_company \'和\'acid_sites \'的表,其结构是一个公司可以有多个站点。 当用户想要添加站点时,他首先必须输入公司名称,以查看数据库中是否已经存在该公司的名称。我已经有了公司名称字段的自动完成功能,但我想做的是禁用(或更改)“添加公司”表单的提交按钮,改为将用户带到他可以添加的表单公司的网站。 因此,步骤将是: [用户单击\'添加站点\']-> [当前\'添加公司\'表单]-> [处理在Company_name自动填充字段上输入的用户]-> 公司已经存在-> [将表单提交按钮更改为\'添加站点\'(或显示\'添加站点表单\'的链接)] 公司不存在->保持提交按钮不变->用户按下提交[添加公司并将用户带到'添加站点\'表单](我已经准备好了!) 因此,我想知道的是,当用户从找到的结果中选择公司名称并相应地更改其他表单组件时,如何从company_name元素中捕获事件。 就像是:
(user inputs company name) -> results found -> (user clicks one of the found results)<br />
<code>
do_disableForm()<br />
{<br />
&nbsp;&nbsp;this.form.addcompany.company_name.disable();<br />
&nbsp;&nbsp;this.form.addcompany.submit.disable();<br />
&nbsp;&nbsp;this.a.addsite.setVisable(TRUE);
}<br />
</code>
\“ 添加站点 \”链接还需要在其超链接引用中包含公司ID,因此我还需要从结果。也许在隐藏的表单组件中。 任何帮助将不胜感激。 作为旁注,我尝试尽可能地遵循“ drupal方式” :)     

解决方法

        在“ 1”中,声明了用于自动完成的JavaScript对象Drupal.jsAc。这可能是您要寻找的:
/**
 * Puts the currently highlighted suggestion into the autocomplete field.
 */
Drupal.jsAC.prototype.select = function (node) {
  this.input.value = $(node).data(\'autocompleteValue\');
};
通常,在JavaScript中,几乎所有内容都可以覆盖,包括原型。 因此,您只需将其复制到自己的自定义.js文件中,然后添加自定义代码
do_disableForm