javascript - 捕获 Drupal 自动完成值/事件并根据找到的结果更改表单组件

标签 javascript json drupal autocomplete dom-events

我不是 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 />
&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 方式”:)

最佳答案

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/

相关文章:

date - 如何在 Drupal 7 中添加日期字段类型

linux - 货车不工作

php - 在模板中的 load_node 上访问 Drupal 7 中的字段值

javascript - 检查某个值是否存在于数组中的任何位置

javascript - 如何将 babel 与 webpack 一起使用以实现 ie11 兼容性

c# - 嵌入式资源 JSON 到 JObject

java - 日期格式 JSON jqgrid

javascript - NodeJS Express JS - MongoError : failed to connect to server

javascript - fetch() 对 Express.js 的 POST 请求生成空正文 {}

java - 如何从android中的Map中获取键值对