0

ユーザー プロファイル ページに 1 つのフォームを追加したいと考えています。だから私はuser-profiled.tpl.phpを作成しました。そのテンプレートでは、テスト用に ajax フレームワークから例をコピーしました。コード全体は次のとおりです。

function ajax_example_simplest($form, &$form_state) {
 $form = array();
 $form['changethis'] = array(
'#type' => 'select',
'#options' => array(
  'one' => 'one',
  'two' => 'two',
  'three' => 'three',
),
'#ajax' => array(
  'callback' => 'ajax_example_simplest_callback',
  'wrapper' => 'replace_textfield_div',
 ),
);


$form['replace_textfield'] = array(
'#type' => 'textfield',
'#title' => t("The default value will be changed"),
'#description' => t("Say something about why you chose") . "'" .
  (!empty($form_state['values']['changethis'])
  ? $form_state['values']['changethis'] : t("Not changed yet")) . "'",
'#prefix' => '<div id="replace_textfield_div">',
'#suffix' => '</div>',
);
  return $form;
 }

function ajax_example_simplest_callback($form, $form_state) {
 return $form['replace_textfield'];
}

私は今混乱しています。チェックボックスをクリックした後、テキストフィールドは何も変わりません。私のjqueryのバージョンは1.9です。他に制約はありますか?

4

1 に答える 1

0

変更は説明にあり、テキストフィールドにはありません(最初にあなたと同じエラーをしました)。ただし、コードを更新したため、「テキストフィールド」にも値が表示されます。

function ajax_example_simplest($form, &$form_state)
{
    $form = array();

    $form['changethis'] = array(
        '#type' => 'select',
        '#options' => array(
            'one'   => 'one',
            'two'   => 'two',
            'three' => 'three',
        ),
        '#ajax' => array(
            'callback' => 'ajax_example_simplest_callback2',
            'wrapper'  => 'replace_textfield_div',
        ),
    );

    $number = (!empty($form_state['values']['changethis']) ? $form_state['values']['changethis'] : t("Not changed yet"));
    $form['replace_textfield'] = array(
        '#type'        => 'textfield',
        '#title'       => t("The default value will be changed"),

        // Not that value was changed in the description
        '#description' => t("Say something about why you chose") . " '" . $number . "'",

        // Also add next line if you want to see it in the text box
        '#value'       => $number,

        '#prefix'      => '<div id="replace_textfield_div">',
        '#suffix'      => '</div>',
    );

    return $form;
}

function ajax_example_simplest_callback2($form, $form_state) {
    return $form['replace_textfield'];
}
于 2016-04-29T22:40:06.150 に答える