使用名称而非索引在组合框内设置选定值

时间:2016-12-22 08:29:49

标签: javascript jquery

如果我像这样渲染组合框

    $('#MyCombo').html('<option value=""></option>');
    $.each(mydata, function (i, v) {
       $('#MyCombo').append('<option value="' + v.PersonId+ '">' + v.PersonName + '</option>');
    });

如果v.PersonName == 'John'

,如何在组合框内设置所选值

P.S。我知道我可以使用它的索引设置值

 $('#MyCombo').prop('selectedIndex', 2);

但在这种情况下,我不知道索引,我只知道名字。

6 个答案:

答案 0 :(得分:2)

试试这个。

$('#MyCombo').html('<option value=""></option>');
$.each(mydata, function (i, v) {
    $('#MyCombo').append('<option value="' + v.PersonId + '" '+ 
                         (v.PersonName == 'John ')? 'selected ' : '' +'>' + 
                         v.PersonName + '</option>');
});

答案 1 :(得分:2)

您可以轻松地执行此操作

   $('#MyCombo').html('<option value=""></option>');
    $.each(mydata, function (i, v) {
       $('#MyCombo').append('<option value="' + v.PersonId+ '">' + v.PersonName + '</option>');
    });
$('#MyCombo').value = "Jhon'sId"; 

答案 2 :(得分:1)

您可以使用jQuery.prop()功能。我喜欢这个,然后再写两次完整的HTML。

Example on jsFiddle

var options = [
    { value: 'foo',  label: 'Lorem' },
    { value: 'bar', label: 'Ipsum' },
    { value: 'juice', label: 'Orange' }
];

$.each(options, function() {
    var option = $('<option/>')
        .text(this.label)
        .val(this.value);

    if ( this.value == 'bar' ) {
        option.prop('selected', 'selected');
    }

    option.appendTo($('select'));
});

答案 3 :(得分:1)

$('#MyCombo option').filter(function () { 
    return $(this).html() == "John"; 
}).prop('selected', true);

答案 4 :(得分:0)

一个简单的答案

$('#MyCombo').html('<option value=""></option>');
    $.each(mydata, function (i, v) {
       if (v.PersonName== 'John')
          $('#MyCombo').append('<option selected value="' + v.PersonId+ '">' + v.PersonName + '</option>');
       else
          $('#MyCombo').append('<option value="' + v.PersonId+ '">' + v.PersonName + '</option>');
    });

答案 5 :(得分:0)

你可以这样做

$('#MyCombo').html('<option value=""></option>');
$.each(mydata, function (i, v) 
{
    if(v.PersonName == 'John')
    {
        $('#MyCombo').append('<option value="' + v.PersonId + '"selected>' + v.PersonName + '</option>');
    }
    else
    {
        $('#MyCombo').append('<option value="' + v.PersonId + '">' + v.PersonName + '</option>');
    }
};