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

van*_*ude 2 javascript json drupal autocomplete javascript-events

我不是AJAX,drupal或javascript的专家,但我会尽我所能让我的问题尽可能清楚.

我在开发环境中运行MySQL上的drupal 7.我编写了自己的模块'acid'来处理自定义自动完成功能

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

当用户想要添加站点时,他首先必须输入公司名称,以查看公司名称是否已存在于DB中.我有公司名称字段的自动完成功能正常工作,但我想要做的是禁用(或更改)"添加公司"表单的提交按钮,而不是将用户带到他可以添加网站的表单到公司.

所以步骤是:

  • [用户点击'添加网站'] - > [显示'添加公司'表单] - > [处理公司名称自动填充字段上的用户输入] - >
  • 公司已存在 - > [将表单提交按钮更改为"添加网站"(或提供"添加网站表单"的链接)]
  • 公司不存在 - >保持提交按钮不变 - >用户按提交[添加公司并将用户带到'添加网站'表格] (我已经完成了这项工作!)

所以我想知道的是,当用户从找到的结果中选择公司名称并相应地更改其他表单组件时,如何从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>
Run Code Online (Sandbox Code Playgroud)

"<a href='?q=addsite&companyid=xx'>添加网站</a>"链接还需要在其超链接引用中包含公司ID,因此我还需要从结果中捕获此信息.也许是一个隐藏的形式组件.

任何帮助将不胜感激.

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

cor*_*cho 6

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');
};
Run Code Online (Sandbox Code Playgroud)

通常,在JavaScript中,几乎所有内容都可以覆盖,包括原型.

因此,您只需将其复制到自己的自定义.js文件中,然后添加自定义代码即可 do_disableForm