【问题标题】:Drupal 7: Webform: Set hidden field to some value on radio button selectionDrupal 7:Webform:将隐藏字段设置为单选按钮选择的某个值
【发布时间】:2013-12-23 22:17:54
【问题描述】:

我有一个网络表单,上面有一个单选按钮选择列表。

我想根据单选按钮选择设置隐藏文本字段的值。 因此,如果用户选择第一个选项,我希望文本字段具有“First”作为文本,就像这样。

这可以吗?我想最终在以后将此文本字段用于其他处理。

【问题讨论】:

  • 你以后能不能只使用单选按钮选择的值而不是做这个客户端?

标签: drupal drupal-7 drupal-webform


【解决方案1】:

我同意 Ben...您应该使用选择字段选项的语法来使用选择字段本身的值,即 "safe_key|Some readable option"(不带引号)

因此您的选择字段选项将类似于:

first|This is some pizza
second|Just the cheese

如果你愿意,既然你想要“First”这个值,你甚至可以将键大写,即:

First|This is some pizza
Second|Just the cheese

但是,如果您坚持让选择字段更改隐藏字段的值,并且您想纯粹通过 Drupal 7 前端执行此操作,那么我建议如下:

  • 安装以下模块:
    • 每个节点的代码 - 允许您将自定义 CSS/JS 添加到内容类型或单个节点
  • 更新您的内容类型设置(即按内容类型或单个节点)
  • 然后,编写一些 jQuery 或 JS 来在包含您的网络表单的节点上执行您想要的操作...即:

你想要的一些 Javascript::jQuery:

jQuery( "#my-select-field" )
  .change(function () {
    var str = jQuery(this).text();
    jQuery( "my-hidden-field" ).val( str );
  })
  .change();

最后的“.change()”调用是为了触发更改事件,以便您的隐藏字段始终填充适当的数据...

请务必将您的代码放入 "jQuery( document ).ready(function() { ... }" 调用中,以便在正确的时刻进行绑定,从而完成页面加载。

*注意:在 Drupal 7 中,核心 jQuery 库由 "jQuery" 引用,而不是 "$" 别名

【讨论】:

  • 我同意设置 Select 值是明智的做法。但是,如果您致力于使用第二个字段并且您对自定义模块感到满意,而不是使用 jQuery,我建议使用 hook_form_submit 来设置隐藏字段的值。然后你就不用担心人们关闭了 JavaScript 或任何其他客户端问题。
  • 谢谢格雷厄姆。你能告诉我如何使用 hook_form_submit 吗?我对 Drupal 真的很陌生,因此任何帮助都会很棒!
【解决方案2】:

您可以创建一个实现提交功能的模块。因此,如果您的模块是“specialFormProcessing”,您将创建函数:

function specialFormProcessing_mySubmitFunction($form, &$form_state) {
}

在该函数中,您可以从 SELECT 框中设置隐藏字段的值。

您还应该将您的函数添加到将处理表单的函数数组中。会有你的和表单的原始提交功能(取决于表单是什么),可能还有其他模块已经实现的其他功能。为此,您可以在模块中创建 hook_form_alter() 函数:

function specialFormProcessing_form_submit(&$form, &$form_state, $form_id) {
}

您使用 $form_id 来确保您正在处理正确的表单,然后执行以下操作:

$form['#submit'][]='specialFormProcessing_mySubmitFunction';

我发现 VanDyk 的《Pro Drupal Development》一书在我学习 Drupal 和操作表单时非常有帮助。我使用的是 Drupal 6,但他有一个更新的 Drupal 7 版本。有人批评它没有处理 Drupal 7 的一些新功能,但它对表单的处理应该很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2016-06-29
    • 2015-05-27
    • 1970-01-01
    相关资源
    最近更新 更多