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

这是jsfiddle

4

4 回答 4

4

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

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

演示

于 2013-09-25T08:26:38.793 回答
1

尝试这个

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

代替

$('#ddlCountry').val(2);
于 2013-09-25T08:26:08.137 回答
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);
        })
    }
  });

在这个小提琴中结帐

于 2013-09-25T08:26:41.577 回答
0

设置值不会触发change事件。

你可以加 :

$('#ddlCountry').val(2).trigger('change');
于 2013-09-25T08:27:41.890 回答