我擁有的是一個Drupal表單,用PHP編寫,當然有兩個選擇器。第一個是Drupal主題列表,第二個是可用區域列表。在Drupal中,某些主題有一些區域可用於在選擇主題時放入塊,因此我希望區域選擇器由與選定主題關聯的可用選項填充。如何在使用jQuery的Drupal 6中創建一個動態表單?
我希望我的JavaScript文件使用jQuery來監聽主題選擇器,以便在更改時更新區域選擇器。
我有模塊PHP的設置,以便有一個值的二維數組,使數組[]主題'] =陣列()的可能的區域值。就像這樣:
Array
(
[garland] => Array
(
[left] => left
[] =>
[right] => right
)
[zen] => Array
(
[] =>
[sidebar_first] => sidebar_first
[sidebar_second] => sidebar_second
)
)
被此代碼完成的:
$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;
}
這裏是形式:
$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,
);
我真正需要做的是讓二維數組$ regionOptions進入javascript!我嘗試了drupal_to_js和drupal_add_js,但它不起作用!
的JavaScript是這個至今:
$(document).ready(function(){
$('#edit-theme').change(function(){
alert(Drupal.settings.regions[$(this).val()]);
});
});
這是我在drupal_add_js嘗試(在PHP代碼):
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