我正在处理一对彼此直接影响的表单字段。特别是我正在处理的问题是,我们有数千个用户可以加入我在网站上加入的群组。我们正在为该网站创建一些管理分析表单。这些表单的一部分是按组过滤。
问题在于,大多数人不知道他们头脑中的一个群体的名称,只知道它的开头。因此,我们没有使用自动完成,而是提出了两个下拉菜单。第一个包含选项A到Z,组名称以字母开头的字母。第二个下拉列表包含以所选字母开头的所有组。
这个概念很简单,我们可以使用jQuery轻松实现AJAX。但这会导致验证错误。经过一些研究,我发现这与Drupal表单缓存有关。解决方案是使用ahah函数。
问题在于,到目前为止我发现的所有指令都处理了指定字段更新本身的操作,而不是另一个字段。所以我试图弄清楚如何获取字母列表以使用ahah更新组列表并使用表单缓存注册新值。
我发现的一个解决方案是在隐藏的下拉列表中简单地加载页面上的所有值,然后根据需要加载可见的一组中的值。但是这会产生一系列问题,因为客户端几乎只使用IE浏览器,而且当给出类似这样的大型列表时,我们已经看到IE会出现问题。特别是使用JavaScript存储的列表。所以我们需要一个轻量级的解决方案。
有什么想法?想法?
答案 0 :(得分:1)
简而言之,AHAH的工作原理如下:
$form_state
#ahah
属性的元素发生更改时,将对指定为#ahah
属性中的路径的URL进行ajax调用。$form_state
重建表单,以便它可以根据在您的情况下,您需要使表单生成功能知道$ form_state中选择的值。它必须:
回调函数将实现表单缓存和重建。
回调函数的代码有很好的解释:
答案 1 :(得分:0)
我实际上在另一个StackExchange网站上得到了答案。他建议使用示例模块来提出解决方案非常有效。