Drupal 7:实时 link 选定字段到 Drupal 7 中的文本字段

Drupal7: real time link selected field to a text field in Drupal7

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

目标

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

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

字段:部门

从那以后,关联的名字分别是

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

因此,当实习生select的“人力资源”时,“Gertrude Def”的名字应该出现在select 下方的文本字段。 我附上了一个模型以更好地了解我需要什么。

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

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

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

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 您可以包含所有逻辑来检查 select 在 Department 字段上编辑了哪个值,然后在中显示正确的值合作伙伴字段。同时,更新您在网络表单组件中作为文本字段添加的原始字段 UI。