将PHP变量传递给ONCHANGE事件上的javascript

时间:2012-03-08 08:54:01

标签: php javascript jquery codeigniter

当我在下拉列表中选择新值时,我想更改标签的文本。

这些是我的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 = '??????';
}

????? 应该是所选国家的首都。我如何传递$ data [所选国家的指数] ['资本']的价值?

2 个答案:

答案 0 :(得分: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'];
}

答案 1 :(得分:0)

最好的方式(在我看来)是将PHP $数据数组转换为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数组对应的正确索引。

假设您正在使用CodeIgniter,onChange应如下所示:

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