【问题标题】:Drupal7: real time link selected field to a text field in Drupal7Drupal 7:将选定字段实时链接到 Drupal 7 中的文本字段
【发布时间】:2019-06-24 11:28:27
【问题描述】:

我正在创建一个网络表单来构建订阅表单,在 Drupal 7.65 上

目标

我需要做的是:从列表中选择一个角色,并在文本字段中自动显示该角色的关联名称。 正如我所说,名称应该显示在其下方的不可修改的文本字段中。

假设有效,以下列表 (key => value)

字段:部门

  • business_manager|业务经理
  • hr_consultant|人力资源
  • training_developer|培训开发人员

从时间上看,相关联的名字,分别是

选项可以出现在文本字段hr_business_partner

  • 史蒂夫·艾布克
  • 格特鲁德·德夫
  • Sven Hgj Klm

因此,当受训者选择“人力资源”时,“Gertrude Def”的名称应出现在选择项下方的文本字段中。 我附上了一个模型以便更好地了解我的需求。

重要 我不能将名称作为值放入列表中,因为关联可以更改,但旧记录应保留以前注册的关联

【问题讨论】:

标签: drupal-7


【解决方案1】:

您可以使用hook_form_alter() 并添加一个带有您需要的配对键值列表的新选择字段到网络表单。然后使用 javascript 更新 HR 业务合作伙伴字段中显示的字段值更改,顺便说一下,这也需要通过您的 hook_form_alter 添加。您可以使用分类来维护部门/业务合作伙伴的列表,该列表将填充您的部门和业务合作伙伴。

编写一些 javascript 来动态更新未通过 form_alter 添加的原始字段,以进行更改。我建议在您的网络表单组件中创建两个文本字段,它们将保存表单更改添加字段中的值。这样用户选择的这些值就会保存在您的表单中。

function MODULENAME_form_alter(&$form, &$form_state, $form_id) {
if($form_id == "webform_client_form_####"){
        $form['#attached']['js'] = array(drupal_get_path('module','MODULENAME') . '/js/webform.js');
        $form['hr_dept'] = array(
            "#type" => "select",
            "#options" => array("business_manager"=>"Business Manager", "hr_consultant"=>"Human Resources"),
        );
        $partners = taxonomy_get_tree(#); //the VID of the taxonomy

        $list = array("0"=>"None"); //first option

        foreach($partners as $tid => $partner){
            $list[$partner->tid] = $partner->name;
        }

        $form['hr_partner'] = array(
            '#type' => 'select',
            '#options' => $list,
        );
}
    }

在您的 javascript 文件 /js/webform.js 中,您可以包含所有逻辑以检查在“部门”字段中选择了哪个值,然后在“合作伙伴”字段中显示正确的值。同时,更新您在 webform 组件 UI 中添加为文本字段的原始字段。

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多