0

我有一个选择,其中包含从内容生成的一些选项:

  <select style="color: #444;">
<?php

$select_optd = 0;
foreach($DATA as $EACHOPTION){

// Checking some internal stuff, this works
if(IFISVALID){ // Now lets say it is valid, it will output some options

            // Option echo
    echo '<option';

            // Some code to show the first option as selected and setting some
            // later needed POST javascript variables
    if($select_optd == 0){
    echo ' selected="selected" ';
    $select_optd = 1;   
    $show_ctrl_id = $EACHOPTION['id'];
    $show_ctrl_spot = $EACHOPTION['spot'];
    }

            // echo the option html data

    echo  ' id="PRJ_OPT_'.$EACHOPTION['id'].$EACHOPTION['spot'].'" >';
    echo $EACHOPTION['title'] . ' - Spot: ' . $EACHOPTION['spot'];
    echo '</option>';

    ?>

    <script type="text/javascript">
            // Now the Javascript for when the option is selected
    $(document).ready(function(){   

    $('#PRJ_OPT_<?php print($EACHOPTION['id']); print($EACHOPTION['spot']);?>').click(function(){

            // An image showing the option selected     
    $('#PRJ_IMG_SHOW').attr('src','<?php print($EACHOPTION['image_url']); ?>'); 

            // Some posting inputs for later on
            $('#w_prj_id_send').val('<?php print($EACHOPTION['id']); ?>');
    $('#w_prj_spot_send').val('<?php print($EACHOPTION['spot']); ?>');

            // An alert to test if it's working  
    alert('Changed');
        });

    }); 
    </script>

    <?php   
    }else{ // that option was not valid, next one. }

} // End of Foreach
?>
</select>

问题是选项上的这个 .click() 事件仅适用于 firefox。我在 Chrome、IE 上试过……只适用于 Firefox。

这个问题有解决方案或解释吗?

//------------------------------------------------ - - - - - - - - - // 解析度:

<script type="text/javascript">
    $(document).ready(function(){   

        $('#prj_selector').change(function(){
        var SELECTED_PRJ = $('#prj_selector').val();    

        <?php
        foreach($DATA as $EACHOPTION){
        ?>  
            if(SELECTED_PRJ == '<?php echo $EACHOPTION['title'] . ' - Spot: ' . $EACHOPTION['spot']; ?>'){
            $('#PRJ_IMG_SHOW').attr('src','<?php print($EACHOPTION['image_url']); ?>'); 
            $('#w_prj_id_send').val('<?php print($EACHOPTION['id']); ?>');
            $('#w_prj_spot_send').val('<?php print($EACHOPTION['spot']); ?>');
            }
        <?  
        }
        ?>                      

        });
    }); 
</script>
4

2 回答 2

1

因为<select>是控件,不是普通元素。

.change()改为在选择元素本身上使用。

于 2012-06-08T17:45:19.707 回答
1

对于选择框,您可以使用 .change() 事件而不是 .click

http://comp345.awardspace.com/select_element_cheatsheet.pdf

于 2012-06-08T17:46:17.440 回答