0

これは Drupal フォームに関する質問です。

選択した日付に基づいて 3 つのラジオ ボタンの行を動的に作成する UI に取り組んでいます。私が抱えている問題は、ラジオ ボタンをいくつか選択し、別の日付を選択して別のラジオ ボタンのセットを取得すると、最初のリストにあったラジオが選択された状態を維持し、「#default_value」属性を無視することです。

私が望むのは、新しい日付が選択されたときに、動的に作成されたすべてのラジオが選択解除されることです。今考えられる唯一の方法は、ラジオの各セットのラジオ名で使用する一意のキーを作成することです。

4

1 に答える 1

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」がフォームの初期ビューを制御するためだけに有効であり、ポストバックでは使用されないことだと思います。誰でも確認できますか?

于 2010-07-31T20:15:08.767 に答える