使用jquery无法设置select选定的值

3

以下是我的 HTML 代码

<select id="ddlCountry" placeholder="optional" class="select" title="Select Country">
 <option value="0">Select Country</option>
</select>

以下是 JQuery 代码.....

$(document).ready(function () {

  $('select.select').each(function () {
    var title = $(this).attr('title');
    if ($('option:selected', this).val() != '') {
      title = $('option:selected', this).text();
      $(this)
        .css({
          'z-index': 10,
          'opacity': 0,
          '-khtml-appearance': 'none'
        })
        .after('<span class="select">' + title + '</span>')
        .change(function () {
          val = $('option:selected', this).text();
          $(this).next().text(val);
        })
    }
  });


  var country = [{
    "CountryID": 1,
    "CountryName": "Afghanistan"
  }, {
    "CountryID": 2,
    "CountryName": "Albania"
  }, {
    "CountryID": 3,
    "CountryName": "Algeria"
  }, {
    "CountryID": 4,
    "CountryName": "American Samoa"
  }, {
    "CountryID": 5,
    "CountryName": "Andorra"
  }, {
    "CountryID": 6,
    "CountryName": "Angola"
  }, {
    "CountryID": 7,
    "CountryName": "Anguilla"
  }, {
    "CountryID": 8,
    "CountryName": "Antarctica"
  }, {
    "CountryID": 9,
    "CountryName": "Antigua and Barbuda"
  }, {
    "CountryID": 10,
    "CountryName": "Argentina"
  }];

  $.each(country, function (index, item) {
    $('#ddlCountry').append($('<option></option>').val(item.CountryID).html(item.CountryName));
  });

  $('#ddlCountry').val(2);
});

我已经在准备阶段将下拉框的值设置为2,但默认值始终是“选择国家”。

这里是jsfiddle链接。


什么是问题? - Jai
刚刚发布了一个答案。 - Jai
4个回答

4

当您以编程方式更改选择的值时,没有触发onchange事件。手动触发它:

$('#ddlCountry').val(2).change();

DEMO


1

试试这个

$("#ddlCountry")[0].selectedIndex = 2;

替代

$('#ddlCountry').val(2);

0

你可以将 .each 函数放在你设置值为 2 的那一行下面,像这样:

 $('#ddlCountry').val(2); //<---below this one

  $('select.select').each(function () {
    var title = $(this).attr('title');
    if ($('option:selected', this).val() != '') {
      title = $('option:selected', this).text();
      $(this)
        .css({
          'z-index': 10,
          'opacity': 0,
          '-khtml-appearance': 'none'
        })
        .after('<span class="select">' + title + '</span>')
        .change(function () {
          val = $('option:selected', this).text();
          $(this).next().text(val);
        })
    }
  });

在这个Fiddle中结帐


0

设置值不会触发change事件。

您可以添加:

$('#ddlCountry').val(2).trigger('change');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接