更新<选项>根据网址的城市价值标记“已选择”属性

时间:2013-03-28 16:27:37

标签: php javascript jquery html

这是我的网址:www.xyz.com/index?city = NY 我正在尝试更新<选项>根据网址的城市价值标记“已选择”属性。 这是我的部分HTML:

 <script>
    function loadCity(val)
    {
      window.location.assign("/do/index?city="+val); //script that reload's page as per selected city value.

    }
   $(document).ready ( function(){
        var cityValue= <?=$_GET['city'] ?>;        
        var k = getElementById(cityValue);         
        k.option.setAttribute('selected', true);   
    });​                                            //this function not working
 </script>




<select id="city" onchange="loadCity(this.value)">
                    <option>Cities</option>
                        <?php $cities=get_cities(); ?>   //get cities from an array
                        <?php foreach($cities as $city): ?>

                        <option id="<?= $city?>" value="<?= $city?>"><?= $city?></option>  

                        <?php endforeach; ?>  
                    </select>

尝试了一堆其他的东西,没有任何接缝可以工作。 在此先感谢。(非常感谢您的回复!)

4 个答案:

答案 0 :(得分:1)

首先你需要改变

var cityValue= <?=$_GET['city'] ?>; 

var cityValue= "<?=$_GET['city'] ?>"; 

答案 1 :(得分:1)

$(document).ready(function(){
    var cityValue = "<?php echo $_GET['city']; ?>";
    $('#'+cityValue).prop('selected', true);
});​ 

答案 2 :(得分:1)

为什么要在JavaScript中设置所选值?您可以删除整个document.ready部分并在PHP中执行。

<select id="city" onchange="loadCity(this.value)">
    <option>Cities</option>
    <?php $cities=get_cities(); ?>   //get cities from an array
    <?php foreach($cities as $city): ?>
         <option id="<?= $city; ?>" value="<?= $city; ?>" <?= $city == $_GET['city'] ? 'selected' : '' ?> ><?= $city; ?></option>  
    <?php endforeach; ?>  
</select>

或者在jQuery中你可以做到

$("#city").val(cityValue);

答案 3 :(得分:1)

而不是使用javascript,你实际上可以在你的php文件中的for循环中添加条件:

<select id="city" onchange="loadCity(this.value)">
   <option>Cities</option>
   <?php $cities=get_cities(); ?>   //get cities from an array
   <?php foreach($cities as $city): ?>

     <option id="<?= $city?>" value="<?= $city?>" <?php if(isset($_GET['city']) && $_GET['city'] == $city) echo "selected";?>><?= $city?></option>  

   <?php endforeach; ?>  
</select>

或jQuery:

$('#city option[value="'+cityValue+'"]').prop("selected",true);