【发布时间】:2014-05-01 14:10:09
【问题描述】:
问题/情况
我们想要验证一个使用 AJAX 动态加载的网络表单(通过 webform_ajax)。
步骤(所需)
- 访问者点击链接
- 数据在 DIV 中加载(jQuery AJAX 加载)
- 表单已呈现并可发送(带有验证和 AJAX 发送)
问题
提交表单时,不会触发 AJAX 验证,访问者会被发送到相应的节点(下一页)。我们如何设置 Drupal 来完成所需的步骤?我们使用以下模块,并尝试了几种技术,请参阅下面的测试。
技术问题
在普通节点上,webform 有 Drupal.settings,但是当使用 AJAX 加载时,webform 没有 Drupal.settings。 Drupal.settings 包含在父包装器 DIV 上使用的节点 ID(例如:#webform-ajax-wrapper-127)。最后剥离 ID 以供全球使用是行不通的。
主要问题
我们如何解决这个问题?
子问题(单独或解决此问题的步骤)
- 在 AJAX 加载(新内容)之后包含 JS 的最佳方式是什么?
- 我们如何(重新)在新内容上启动 Webform/Webform AJAX?
- 我们如何添加自定义/新 Webform Drupal.settings?
测试
- 行为:
$('div').ajaxComplete(function(){Drupal.attachBehaviors(DIV);}); - 将JS插入页面
drupal_add_js('sites/all/modules/webform/js/webform.js'); - 插入其他网络表单以使用新内容的代码。
功能模块
- jQuery AJAX 加载
- 网络表单
- Webform Ajax
页面上的模块
- 面板
- 观看次数
你能帮助我朝着正确的方向前进吗?你有什么经验来完成这项工作?
【问题讨论】:
-
This answer 解释了如何在 AJAX 请求的内容中包含缺少的 javascript。看完后,你大概可以解决(至少)子问题1。
-
谢谢,但我们如何才能让它在面板中工作?
标签: jquery drupal drupal-7 drupal-modules