当我在下拉列表中选择新值时,我想更改标签的文本。
这些是我的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 [所选国家的指数] ['资本']的价值?
答案 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)"