2012-02-25 10 views
1

私は動的に提出(AJAX)の前に、それらの合計で、フィールド$フォーム[「field_gender_totalを」]移入する必要がある2つのフィールドDrupal 7、他の2つのフィールドの合計に基づいてフィールドを動的に取り込む方法は?

$form["field_num_males"] 
$form["field_num_females"] 

を持っています。

これはDrupal 7でどのように行うことができますか?

ありがとうございます!

答えて

2

はい、これはAjaxで行うことができます。次のコードは、テキストフィールドが更新されたときに合計を自動的に更新します:

function gender_total_menu() 
{ 
    $items = array(); 

    $items['test'] = array(
     'title'   => Gender total, 
     'page callback' => 'drupal_get_form', 
     'page arguments' => array('gender_total_form'), 
     'access callback' => array(TRUE), 
     'type'   => MENU_CALLBACK, 
    ); 

    return $items; 
} 

function gender_total_form($form, &$form_state) 
{ 
    $total = 0; 

    if (array_key_exists('values', $form_state) && 
     array_key_exists('field_num_males', $form_state['values']) && 
     array_key_exists('field_num_females', $form_state['values']) 
    ) { 
     $total = $form_state['values']['field_num_males'] + $form_state['values']['field_num_females']; 
    } 

    $form = array(); 

    $form["field_num_males"] = array(
     '#type'   => 'textfield', 
     '#title'   => t("Number of males"), 
     '#default_value' => 0, 
     '#ajax' => array(
      'callback' => 'ajax_update_callback', 
      'wrapper' => 'wrapper', 
     ), 
    ); 

    $form["field_num_females"] = array(
     '#type'   => 'textfield', 
     '#title'   => t("Number of females"), 
     '#default_value' => 0, 
     '#ajax' => array(
      'callback' => 'ajax_update_callback', 
      'wrapper' => 'wrapper', 
     ), 
    ); 

    $form['total'] = array(
     '#markup' => '<p> Total: ' . $total . '</p>', 
     '#prefix' => '<div id="wrapper">', 
     '#suffix' => '</div>', 
    ); 

    return $form; 
} 

function ajax_update_callback($form, $form_state) 
{ 
    return $form['total']; 
} 
0

Computed Fieldモジュール

計算フィールドは、あなたのコンテンツタイプに カスタム「計算フィールド」を追加することができます非常に強力なCCKフィールドモジュールです。試してみてくださいこれらの計算フィールド には、PHPコードで定義した値が入力されます。あなたは他のフィールドも含めて、 をDrupalが利用できるものに描きます。

+0

フォームに入力中にフィールドに入力されますか?私は計算されたフィールドが隠されていると思うし、データベースに保存.... –

関連する問題