2012-03-08 145 views
0

我想在下拉列表中選擇新值時更改標籤的文本。在ONCHANGE事件中將PHP變量傳遞給JavaScript

這是我的PHP數組:

$data = array(
       '1'=>array('country'=>'Philippines','capital'=>'Manila'), 
       '2'=>array('country'=>'Finland','capital'=>'Helsinki'), 
       '3'=>array('country'=>'India','capital'=>'Delhi') 
      ); 

$countries = array(1=>'Philippines', 2=>'Finland', 3=>'India'); 

這是它應該如何在頁面中顯示:

<div><?php echo form_label('Country: ', 'country'); ?></div> 
    <div><?php echo form_dropdown('country',$countries,'', 
         'onChange="javascript:displayCapitalCity(?????)"'); ?></div> 

    <div><?php echo form_label('Capital: ', 'capitalLabel'); ?></div> 
    <div id="capcity"><?php echo form_label('','capitalcity'); ?></div> 

這是JavaScript:

function displayCapitalCity(?????){ 
document.getElementById('capcity').innerHTML = '??????'; 
} 

? ???應該是所選國家的首都。我將如何通過所選國家的指數數據[] ['capital']?

+0

請問怎麼生成的標記看起來像 – Rafay 2012-03-08 08:57:40

+0

這可能是一個愚蠢的問題,但爲什麼不能在JavaScript中的創建首都陣列第一名?它會爲你節省很多麻煩。 – Ynhockey 2012-03-08 08:59:48

回答

1

試試這個:

<div><?php echo form_dropdown('country',$countries,'', 
         'onChange="javascript:displayCapitalCity(this)"'); ?></div> 


var jsdata = <?php echo json_encode($data); ?>; 
function displayCapitalCity(_targ){ 
    document.getElementById('capcity').innerHTML = jsdata[_targ.value]['capital']; 
} 
+0

這工作。謝謝。但是,我將如何獲得$ res [_targ.value] ['capital']的價值? – xarlotie 2012-03-08 09:44:46

+0

@xarlotie查看更新的代碼 – mgraph 2012-03-08 09:52:16

0

最佳方式(在我看來)是對PHP $ data數組到JSON轉化,使其在客戶端(即JavaScript)的訪問。

<script type="text/javascript"> 
<?php printf('var countriesData = %s;', json_encode($data)) ?> 
function displayCapitalCity(index) { 
    document.getElementById('capcity').innerHTML = countriesData[index].capital; 
} 
</script> 

只要確保您傳遞正確的索引與$ data數組相對應。

假設你正在使用笨,該的onChange應該看起來像:

onchange="javascript:displayCapitalCity(this.value)"