Drupal7:将选定字段实时链接到Drupal7中的文本字段

时间:2019-04-09 13:40:20

标签: drupal-7

我正在Drupal 7.65上创建一个Web表单以建立订阅表单

目标

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

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

字段:部门

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

以及以后的名称分别是

选项可以显示在文本字段hr_business_partner

  • 史蒂夫·阿布
  • Gertrude Def
  • Sven Hgj Klm

因此,当学员选择“ 人力资源”时,“ Gertrude Def ”的名称应显示在所选人员下方的文本字段中。 我附上了模型,以更好地了解我的需求。

mokup webform

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

1 个答案:

答案 0 :(得分:1)

您可以使用hook_form_alter()并将新的选择字段与所需的成对键值列表一起添加到Web表单。然后使用javascript更新更改后,哪些字段值将显示在HR业务合作伙伴字段中,顺便说一句,还需要通过hook_form_alter添加。您可以使用分类法维护部门/业务伙伴的列表,这些列表将填充您的部门和业务伙伴。

编写一些JavaScript来动态更新未通过form_alter添加的原始字段。我建议在您的Webform组件中创建两个文本字段,这些文本字段将保留表单中添加的字段的值。这样用户选择的这些值将保存在您的表单中。

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中作为文本字段添加的原始字段。