我不是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>
“&lt; a href ='?q = addsite&amp; companyid = xx'&gt; add site&lt; / a&gt;” link还需要在其超链接引用中包含公司ID,因此我还需要从结果中捕获这个。也许是隐藏的形式组件。
非常感谢任何帮助。
作为旁注,我试图尽可能地遵循'drupal方式':)
答案 0 :(得分: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');
};
通常,在JavaScript中,几乎所有内容都可以覆盖,包括原型。
因此,您只需将其复制到自己的自定义.js文件中,然后添加自定义代码do_disableForm