私が持っているのは、Drupalフォームです。もちろん、PHPで書かれています。セレクタは2つあります。最初のものはDrupalテーマのリストを持ち、2番目のものは利用可能な地域のリストです。 Drupalでは、特定のテーマにはブロックを入れるための領域があり、そのテーマを選択すると、選択されたテーマに関連付けられているオプションによってリージョンセレクタが設定されます。jQueryを使用してDrupal 6で動的フォームを作成するにはどうすればよいですか?
javascriptファイルでjQueryを使用してテーマセレクタを聴きたいので、変更するとリージョンセレクタが更新されます。
array ['theme'] = array()のような値の2D配列が存在するように、モジュールPHPを設定しました。
このコードによって行われますArray
(
[garland] => Array
(
[left] => left
[] =>
[right] => right
)
[zen] => Array
(
[] =>
[sidebar_first] => sidebar_first
[sidebar_second] => sidebar_second
)
)
::私は本当にやらなければならないことは、2次元配列の$を得ることです
$form = array();
$form['title'] = array(
'#type' => 'markup',
'#value' => '<br/><h4>Update block: <strong>'.$module.': '.$delta.'</strong></h4>'
);
$form['theme'] = array(
'#title' => 'Theme',
'#type' => 'select',
'#options' => drupal_map_assoc($themeOptions),
'#default_value' => $currentTheme,
);
$form['region'] = array(
'#title' => 'Region',
'#type' => 'select',
'#options' => array(''),
'#default_value' => $currentRegion,
);
:
$themeQuery = db_query('SELECT DISTINCT theme from {blocks}');
while($row = db_fetch_object($themeQuery)){
$regionQuery = db_query('SELECT DISTINCT region from {blocks} WHERE theme="%s"',$row->theme);
while($regions = db_fetch_object($regionQuery)){
$regionOptions[$row->theme][$regions->region] = $regions->region;
}
$themeOptions[$row->theme] = $row->theme;
}
そして、こちらのフォームである。このようなregionOptionsをjavascriptに追加する!私はdrupal_to_jsとdrupal_add_jsを試しましたが、うまくいかないでしょう!
javascriptのは、これまでのところ、この次のとおりです。ここで
$(document).ready(function(){
$('#edit-theme').change(function(){
alert(Drupal.settings.regions[$(this).val()]);
});
});
は(PHPコード内)drupal_add_jsで私の試みです:
drupal_add_js(array('regions' => $regionOptions),'setting');
私がしようとすると、この機能は動作します:
drupal_add_js(array('regions' => 'test'),'setting');
そして、javascriptを呼び出してください:
alert(Drupal.settings.regions);
警告メッセージは「テスト」です。
私はこの権利を頼んで欲しいと思います。
これが役立つかどうか分かりませんが、Drupalには、あなたが活用できる組み込みのAjax機能がいくつかあります:http://drupal.org/node/752056 – nmc
ありがとう!私はPHPとjQueryだけを使ってそれを行う方法を理解していました。私は以下のステップを説明しました – fishcx