当调用onchange函数时,动态下拉菜单得到错误的值

时间:2014-04-04 22:07:29

标签: javascript php jquery wordpress google-analytics

我的wordpress网站上有一个动态下拉菜单,我想应用谷歌分析代码,以便我可以跟踪用户点击任何选项并显示值的名称(而不是ID!)。但是现在当我使用onchange调用函数时,它将从最后一个下拉菜单中传递最后一个值名称。 <?php echo $value['value_name'] ?>可以给我正确的名称并为我创建菜单,但是当我在onchange函数中使用相同的代码时,正确的值没有传递给函数!我不明白为什么我得到这样的结果并且没有关于解决方案的线索。感谢您提供任何帮助和解答。

这是PHP代码:

   <?php if ( isset( $optin_filter_manager[ $group['filter_id'] ]['view_filtre']       ) &&  $optin_filter_manager[ $group['filter_id'] ]['view_filtre'] == 'selected' ):?>
     <li>
       <!-- Problem Here  -->
       <select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call('<?php echo $value[value_name]?>')">
         <?php if (  isset( $optin_filter_manager[ $group['filter_id'] ]['all_field_enable'] ) &&  $optin_filter_manager[ $group['filter_id'] ]['all_field_enable'] == 'yes'  ):?>
           <option value="all">
              <?php echo ( empty ( $optin_filter_manager[ $group['filter_id'] ]['all_field_label'] ) )?'All':$optin_filter_manager[ $group['filter_id'] ]['all_field_label'];?>                                                         
           </option>
        <?php endif;?>
    <?php endif;

    foreach( (array)$group['value'] as $value  ):
    // generate catgory filter link

    $param['filter'] = $value['filter_value_id'];

    if ( isset( $optin_filter_manager[ $group['filter_id'] ]['view_filtre'] ) &&  $optin_filter_manager[ $group['filter_id'] ]['view_filtre'] == 'selected' ):?>
        <option name="<?php echo $value['value_name'] ?>" value="<?php echo $value['filter_value_id']?>" <?php selected( in_array( $value['filter_value_id'], (array) $filters ) ); ?> 
        <!-- get variable's name -->
        <?php echo $value['value_name'];?>
        </option>
    <?php else:?>

以下是我用于谷歌分析调用的Javascript代码:

function ga_call(value){
    ga('send', 'event', 'search', 'Filter',value);
}

=============================================== =======

这是问题的后续行动。感谢caspian的回答,这是我修改过的代码:

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call(this.options[this.selectedIndex].text);" >

1 个答案:

答案 0 :(得分:1)

php是服务器端 - javascript是客户端。当浏览器转到该页面时,它将呈现

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call('<?php echo $value[value_name]?>')">

as

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call('current_value')">

获取下拉列表的当前值:

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call(this.value)">    

获取下拉列表中所选项目的文本

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call(this.options[this.selectedIndex].text);">    

js小提示演示:http://jsfiddle.net/WctY2/2/