【问题标题】:How to set selected value of dynamic drop down using jquery?如何使用 jquery 设置动态下拉列表的选定值?
【发布时间】:2012-04-18 20:22:25
【问题描述】:

我有一个在页面加载时使用 ajax 动态生成的下拉列表。 另一方面,我有一个 php 变量,其中包含默认选择的值。 但是,当我尝试这样做时,它并没有选择值。以下是代码:

HTML 和 PHP

<h1>Venue: Edit</h1>
<a href="/venue"><< Back to Venue List</a>
<br />
<form method="post" id="venueEdit" action="<?php echo URL;?>venue/editSave/<?php echo $this->venue['id']; ?>">
    <fieldset>
            <p>
                <label for="cvenue" class="main">Venue</label>
                <input id="cvenue" class="required" type="text" name="venue" value="<?php echo $this->venue['name']; ?>" />
            </p>
            <p>
                <label for="ccity" class="main">City</label>
                <input id="ccity" class="required" type="text" name="city" value="<?php echo $this->venue['city']; ?>" />
            </p>
            <p>
                <label for="ccountry" class="main">Country</label>
                    <select id="ccountry" class="required" name="country">
                        <option value="">-- Select Country --</option>
                    </select>

            </p>
            <p>
                <label class="main">&nbsp;</label><input type="submit" value="Save" />
            </p>
        </fieldset>   
</form>

JS:

function populateCountryDropDown(url){
    $.get(url, function(o) {
        for(var i = 0; i < o.length; i++){
            $('select[name="country"]').append('<option value="' + o[i].id + '">' + o[i].name + "</option>");
        }
    }, 'json');
}

$(document).ready(function(){
        populateCountryDropDown('<?php echo URL; ?>' + 'country/xhrGetCountryList');
        $('select[name="country"]').val('<?php echo $this->venue['countryid']; ?>');
        $("#venueEdit").validate();
    });

我试图提醒 php 值,这没关系,但如果我提醒选择选项值,它始终为空,因为此时它仍在填充下拉列表。我不知道如何解决这个问题。会感谢你们的帮助吗?谢谢。

【问题讨论】:

    标签: php jquery html drop-down-menu


    【解决方案1】:

    您需要移动代码以将值设置到回调中,以在$.get() 返回的 AJAX 调用之后触发正在设置的值。

    function populateCountryDropDown(url){
        $.get(url, function(o) {
            for(var i = 0; i < o.length; i++){
                $('select[name="country"]').append('<option value="' + o[i].id + '">' + o[i].name + "</option>");
            }
            $('select[name="country"]').val('<?php echo $this->venue['countryid']; ?>');
            $("#venueEdit").validate();
        }, 'json');
    }
    
    $(document).ready(function(){
            populateCountryDropDown('<?php echo URL; ?>' + 'country/xhrGetCountryList');
    });
    

    【讨论】:

      【解决方案2】:

      这里的代码:

      $('select[name="country"]').val('<?php echo $this->venue['countryid']; ?>');
      

      尝试更改为:

      $('select[name="country"]').val('<?php echo $this->venue["countryid"]; ?>');  // Double quotes around countryid vs the single quote.
      

      【讨论】:

      • 双引号和单引号对于 OP 在 PHP 中所做的事情没有区别。
      • ^^ 完全正确。完全没有区别。
      猜你喜欢
      • 2015-07-06
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多