Ajax 基于 Multi select 的下拉菜单不适用于文件字段 - drupal 7
Ajax based Multi select dropdown not working with file field - drupal 7
我已将文件上传字段添加到我的节点,并且我正在自定义模块中编辑节点表单,如下面的代码所示。
在 form.Upon select 中有一个基于 ajax 的依赖下拉字段,依赖下拉列表可以很好地加载单个值。
但是当我从下拉列表中 select 多个值时出现以下错误:
An illegal choice has been detected. Please contact the site
administrator
由于文件上传,我遇到了这个特殊的错误field.When我删除了它,表格工作得很好。
到目前为止我找不到任何解决这个问题的线索。
我的代码如下:-
<?php
function my_module_form_alter(&$form, &$form_state, $form_id) {
global $user;
switch ($form_id) {
case 'my_node_node_form':
form_load_include($form_state, 'inc', 'node', 'node.pages');
$country_list = load_countries();
$selected_country = isset($form_state['values']['course_country']) ? $form_state['values']['course_country'] : key($country_list);
$form['course_country'] = array(
'#type' => 'select',
'#title' => t('Select Your Country'),
'#weight' => 11,
'#options' => $country_list,
'#default_value' => $selected_country,
'#ajax' => array(
'callback' => 'city_dropdown_callback',
'wrapper' => 'city_wrapper_list',
),
'#multiple' => TRUE,
'#required' => TRUE,
);
$form['course_country_region'] = array(
'#type' => 'select',
'#title' => t('Select Your City'),
'#weight' => 12,
'#prefix' => '<div id="city_wrapper_list">',
'#suffix' => '</div>',
'#options' => load_cities($selected_country),
'#multiple' => TRUE,
'#required' => TRUE,
);
unset($form['field_upload_resouces']);
break;
}
}
function city_dropdown_callback($form, $form_state) {
return $form['course_country_region'];
}
function load_countries(){
$sel_query = db_select('country', 'cd');
$sel_query->fields('cd');
$result = $sel_query->execute();
while ($data = $result->fetchAssoc()) {
$country_list[$data['id']] = $data['name'];
}
return $country_list;
}
function load_cities($country_id) {
$region_list = array('any' => 'Any');
$sel_query = db_select('city', 'cd');
$sel_query->fields('cd');
if(is_array($country_id)){
$sel_query->condition('cd.country_id', $country_id, 'IN');
}else{
$sel_query->condition('cd.country_id', $country_id);
}
$result = $sel_query->execute();
while ($data = $result->fetchAssoc()) {
$city_list[$data['id']] = $data['name'];
}
return $city_list;
}
我遇到了类似的问题,我通过将 jquery.form.js 更新到最新版本解决了这个问题。
详情请参考link https://www.drupal.org/node/153774#comment-9202403
我已将文件上传字段添加到我的节点,并且我正在自定义模块中编辑节点表单,如下面的代码所示。
在 form.Upon select 中有一个基于 ajax 的依赖下拉字段,依赖下拉列表可以很好地加载单个值。 但是当我从下拉列表中 select 多个值时出现以下错误:
An illegal choice has been detected. Please contact the site administrator
由于文件上传,我遇到了这个特殊的错误field.When我删除了它,表格工作得很好。
到目前为止我找不到任何解决这个问题的线索。
我的代码如下:-
<?php
function my_module_form_alter(&$form, &$form_state, $form_id) {
global $user;
switch ($form_id) {
case 'my_node_node_form':
form_load_include($form_state, 'inc', 'node', 'node.pages');
$country_list = load_countries();
$selected_country = isset($form_state['values']['course_country']) ? $form_state['values']['course_country'] : key($country_list);
$form['course_country'] = array(
'#type' => 'select',
'#title' => t('Select Your Country'),
'#weight' => 11,
'#options' => $country_list,
'#default_value' => $selected_country,
'#ajax' => array(
'callback' => 'city_dropdown_callback',
'wrapper' => 'city_wrapper_list',
),
'#multiple' => TRUE,
'#required' => TRUE,
);
$form['course_country_region'] = array(
'#type' => 'select',
'#title' => t('Select Your City'),
'#weight' => 12,
'#prefix' => '<div id="city_wrapper_list">',
'#suffix' => '</div>',
'#options' => load_cities($selected_country),
'#multiple' => TRUE,
'#required' => TRUE,
);
unset($form['field_upload_resouces']);
break;
}
}
function city_dropdown_callback($form, $form_state) {
return $form['course_country_region'];
}
function load_countries(){
$sel_query = db_select('country', 'cd');
$sel_query->fields('cd');
$result = $sel_query->execute();
while ($data = $result->fetchAssoc()) {
$country_list[$data['id']] = $data['name'];
}
return $country_list;
}
function load_cities($country_id) {
$region_list = array('any' => 'Any');
$sel_query = db_select('city', 'cd');
$sel_query->fields('cd');
if(is_array($country_id)){
$sel_query->condition('cd.country_id', $country_id, 'IN');
}else{
$sel_query->condition('cd.country_id', $country_id);
}
$result = $sel_query->execute();
while ($data = $result->fetchAssoc()) {
$city_list[$data['id']] = $data['name'];
}
return $city_list;
}
我遇到了类似的问题,我通过将 jquery.form.js 更新到最新版本解决了这个问题。
详情请参考link https://www.drupal.org/node/153774#comment-9202403