Drupal 7:实时 link 选定字段到 Drupal 7 中的文本字段
Drupal7: real time link selected field to a text field in Drupal7
我正在 Drupal 7.65 上创建一个网络表单来建立订阅表单
目标
我需要做的是:select 列表中的角色,并自动在文本字段中显示该角色的关联名称。
正如我所说,名称应该显示在其正下方的不可修改的文本字段中。
假设有效,如下列表(key => value
)
字段:部门
- business_manager|业务经理
- hr_consultant|人力资源
- training_developer|培训开发人员
从那以后,关联的名字分别是
选项可以出现在文本字段中hr_business_partner
- 史蒂夫 Abc
- 格特鲁德·德夫
- Sven Hgj Klm
因此,当实习生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。
我正在 Drupal 7.65 上创建一个网络表单来建立订阅表单
目标
我需要做的是:select 列表中的角色,并自动在文本字段中显示该角色的关联名称。 正如我所说,名称应该显示在其正下方的不可修改的文本字段中。
假设有效,如下列表(key => value
)
字段:部门
- business_manager|业务经理
- hr_consultant|人力资源
- training_developer|培训开发人员
从那以后,关联的名字分别是
选项可以出现在文本字段中hr_business_partner
- 史蒂夫 Abc
- 格特鲁德·德夫
- Sven Hgj Klm
因此,当实习生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。