Drupalのフォーム(From API)が各要素の動作制御(JavaScript)が可能です
- FormAPIで簡単に要素間の動作制御(JavaScriptの拡張)ができます。
- 例えば、2選択肢の一方が選択された、その選択肢に応じるよう別の要素を表示させたい場合、Javascriptで実現する必要があります。ここで、Drupalのform配列にJavaScriptの拡張を記述する「states」を利用すれば良いです

FormAPIでフォーム作成記述に「#states」でjavascriptの拡張を自動的に行います
/**
* Implement hook_form
*/
function your_custom_form($node, &$form_state) {
$form['type'] = array(
'#type' => 'radios',
'#options' => array(
'agree' => t('賛成'),
'disagree' => t('反対'),
),
'#title' => t('投票してください'),
);
$form['survey'] = array(
'#type' => 'fieldtext',
'#title' => t('反対意見'),
'#states' => array(
'visible' => array(
':input[name="type"]' => array('value' => 'disagree'),
),
),
);
}
- 実際に、「states」部分の記述はjQueryのセレクターを利用して、参照先の動きをキャッチし、要素の属性を制御します。
- jQueryのセレクターとその属性のキャッチ方法は以下のようなに行います

- 「states」の記述で二つの要素(ラジオボタンと入力テキストボックス)の制御ができるようになります。
- 以下の要素属性が「states」に記述することが可能です:
- enabled
- disabled
- required
- optional
- visible
- invisible
- checked
- unchecked
- expanded
- collapsed