Javascript 捕获Drupal自动完成值/事件并在找到的结果上更改表单组件

Javascript 捕获Drupal自动完成值/事件并在找到的结果上更改表单组件,javascript,json,drupal,autocomplete,dom-events,Javascript,Json,Drupal,Autocomplete,Dom Events,我不是AJAX、Drupal或Javascript方面的专家,但我会尽最大努力让我的问题尽可能清楚 我正在开发环境中的MySQL上运行Drupal7。我编写了自己的模块“acid”,用于处理自定义的自动完成函数 我正在为一家公司建立一个网站,允许他们为所有网站添加客户满意度表格。在我的数据库中,我有一个“acid_公司”和“acid_站点”表,其结构是一个公司可以有多个站点 当用户想要添加站点时,他首先必须输入公司名称,以查看数据库中是否已经存在该公司的名称。我已经让company name字段

我不是AJAX、Drupal或Javascript方面的专家,但我会尽最大努力让我的问题尽可能清楚

我正在开发环境中的MySQL上运行Drupal7。我编写了自己的模块“acid”,用于处理自定义的自动完成函数

我正在为一家公司建立一个网站,允许他们为所有网站添加客户满意度表格。在我的数据库中,我有一个“acid_公司”和“acid_站点”表,其结构是一个公司可以有多个站点

当用户想要添加站点时,他首先必须输入公司名称,以查看数据库中是否已经存在该公司的名称。我已经让company name字段的autocomplete功能正常工作,但我想做的是禁用(或更改)add company表单的submit按钮,以将用户带到表单,在该表单中他可以向公司添加站点

因此,步骤如下:

  • [用户单击“添加站点”]->[显示“添加公司”表单]->[在公司名称自动完成字段上处理用户输入]->
  • 公司allready已存在->[将表单提交按钮更改为“添加站点”(或显示“添加站点表单”的链接)]
  • 公司不存在->保持提交按钮不变->用户按提交[添加公司并将用户带到“添加站点”表单](我已经有了这个工作!)
因此,我想知道的是,当用户从找到的结果中选择了公司名称并相应地更改了其他表单组件时,如何从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>
(用户输入公司名称)->找到的结果->(用户单击找到的结果之一)

do_disableForm()
{
this.form.addcompany.company_name.disable();
this.form.addcompany.submit.disable();
this.a.addsite.setVisable(TRUE); }
“”链接还需要在其超链接引用中包含公司ID,因此我还需要从结果中捕获它。可能在一个隐藏的表单组件中

任何帮助都将不胜感激


作为旁注,我尽可能地遵循“drupal方式:)

misc/autocomplete.js
中,它被声明为用于自动完成的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中,几乎所有内容都可以重写,包括原型

因此,您只需将其复制到自己的custom.js文件中,然后添加自定义代码
do\u disableForm