无法使用jquery设置选择所选值

时间:2013-09-25 08:15:22

标签: javascript jquery html html-select

这是我的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,但默认值始终为Select Country

以下是jsfiddle

4 个答案:

答案 0 :(得分:3)

当以编程方式更改select的选定值时,您不会触发onchange事件。手动触发:

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

DEMO

答案 1 :(得分:1)

试试这个

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

而不是

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

答案 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);
        })
    }
  });

checkout here in this fiddle

答案 3 :(得分:0)

设置值不会触发change事件。

您可以添加:

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