0

这是我的 URL:www.xyz.com/index?city=NY 我正在尝试根据 url 的城市值更新 <option> 标记的 'selected' 属性。这是我的部分 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

4 回答 4

1

首先你需要改变

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

var cityValue= "<?=$_GET['city'] ?>"; 
于 2013-03-28T16:29:59.920 回答
1
$(document).ready(function(){
    var cityValue = "<?php echo $_GET['city']; ?>";
    $('#'+cityValue).prop('selected', true);
});​ 
于 2013-03-28T16:31:14.827 回答
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);
于 2013-03-28T16:36:53.447 回答
1

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

<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);
于 2013-03-28T16:45:02.813 回答