2012-03-08 41 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)"