我不是 AJAX、Drupal 或 Javascript 方面的专家,但我会尽力使我的问题尽可能清楚。
我正在开发环境中的 MySQL 上运行 drupal 7。我编写了自己的模块“acid”来处理自定义自动完成功能
我正在为一家公司构建一个网站,以允许他们为其所有网站添加客户满意度表格。在我的数据库中,我有一张“acid_company”和“acid_sites”表,其结构是一个公司可以拥有多个站点。
当用户想要添加站点时,他首先必须输入公司名称,以查看该公司名称是否已存在于数据库中。我已经让公司名称字段的自动完成功能正常工作,但我想要做的是禁用(或更改)“添加公司”表单的提交按钮,以将用户带到可以添加网站的表单到一家公司。
所以步骤是:
- [用户点击“添加网站”] -> [呈现“添加公司”表单] -> [处理公司名称自动完成字段上的用户输入]->
- 公司已存在 -> [将表单提交按钮更改为“添加网站”(或显示指向“添加网站表单”的链接)]
- 公司不存在 -> 保持提交按钮不变 -> 用户按下提交[添加公司并让用户进入“添加网站”表单](我已经可以使用此功能了!)
所以我想知道的是,当用户从找到的结果中选择公司名称时,如何从 company_name 元素捕获事件并相应地更改其他表单组件。
类似于:
(user inputs company name) -> results found -> (user clicks one of the found results)<br />
<code>
do_disableForm()<br />
{<br />
this.form.addcompany.company_name.disable();<br />
this.form.addcompany.submit.disable();<br />
this.a.addsite.setVisable(TRUE);
}<br />
</code>
“添加网站”链接还需要在其超链接引用中包含公司 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 中,几乎所有内容都可以被重写,包括原型(prototype)。
因此,您只需将其复制到您自己的自定义 .js 文件中,并添加您的自定义代码 do_disableForm
关于javascript - 捕获 Drupal 自动完成值/事件并根据找到的结果更改表单组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173629/