2010-07-26 2 views
0

Это вопрос с Drupal Forms.Как сбросить настройки переключателей при обратной передаче?

Я работаю над пользовательским интерфейсом, который динамически создает строки из 3 переключателей на основе выбранной даты. Проблема, с которой я столкнулась, заключается в том, что если я сделаю выбор радиокнопок и выберем другую дату, чтобы получить еще один набор переключателей, радиостанции, которые были в первом списке, сохраняют свой выбранный статус и игнорируют атрибут '#default_value'.

Что я хочу - это когда выбрана новая дата, так это то, что все динамически созданные радиостанции должны быть отменены. Единственный способ, о котором я могу думать сейчас, - создать уникальный ключ для использования в радиоисточнике для каждого набора радиостанций.

+0

Как вы создаете радиокнопки? Что вы делаете на стороне сервера, когда пользователь выбирает другую дату? –

+0

Радиокнопки динамически создаются с использованием FAPI в hook_alter. Таким образом, в зависимости от того, какую дату пользователь выбирает, я вызову запрос, чтобы выяснить, сколько вариантов есть. Для каждой опции я создаю новую строку переключателей в массиве форм. –

+0

Можете ли вы опубликовать код, который вы используете, чтобы сделать эти переключатели? Все это делается с AJAX или обновляется страница? –

ответ

0

вот часть кода, который создает строки переключателей. Для каждой строки в $ result мне нужно создать строку из 4 переключателей. Я также пытаюсь установить #default_value переключателей на то, что когда-либо было выбрано ранее. Это нормально для исходного представления, но если я вношу изменения, и не сохраняют и хотят получить исходные выбранные значения, он сохраняет выбранные значения.

while ($my_data = db_fetch_object($result)) 
{ 
    $form['opts'][$my_data->opt_id] = array(
    '#type' => 'radios', 
    '#title' => t($my_data->option_name), 
     '#options' => array(
     0 => 'N/A', 
     1 => 'Yes', 
     2 => 'No', 
     3 => 'Sometimes', 
     ), 
    ); 

    $form['opts'][$my_data->opt_id]['#default_value'] = 0; 
    if($my_data->selected_opt_id != 0){ 
    $form['opts'][$my_data->opt_id]['#default_value'] = $my_data->selected_opt_id; 
    } 
} 

В результате я использовал JavaScript для установки значений по умолчанию каждый раз, когда запрашивается листинг. Я думаю, проблема заключалась в том, что «#default_value» подходит только для контроля исходного вида формы и не используется для обратной передачи. Кто-нибудь может подтвердить?

Смежные вопросы