如何使用jQuery,JavaScript和HTML动态设置下拉列表的选定选项?

Eri*_*unt 11 html javascript jquery

出于某种原因,我不能让这个工作.

我的选项列表使用以下脚本动态填充:

function addOption(selectId, value, text, selected) {
    var html = '<option value="'+value+'">'+text+'</option>';
    if (selected == "on") {
        html = '<option value="'+value+'" selected="selected">'+text+'</option>';
    }
    $('#'+selectId).append(html);
}

function addSalespersonOption(id, name, defsales) {
    addOption('salesperson', id, name, defsales);
}
Run Code Online (Sandbox Code Playgroud)

这是HTML:

<td class="text-r"><label for="salesperson">Salesperson:</label></td>
<td>
    <select id="salesperson">
        <option value="">(select)</option>
    </select>
</td>
Run Code Online (Sandbox Code Playgroud)

到目前为止,输出是:

<option value="1266852143634" selected="selected">Eric Hunt</option>
Run Code Online (Sandbox Code Playgroud)

DOM显示了这个:

index              2
disabled           false
value              "1266852143634"
text               "Eric Hunt"
selected           false
defaultSelected    true
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,当页面加载时,下拉列表不会显示Eric Hunt为预选.这件事也没有.

如何获得"选择为真"而不是"defaultSelected true"?


编辑:事实证明,由于deceze的帮助和rosscj2533从下面的答案,上面的代码完美地工作.它不适合我的唯一原因是,我发现Ruby代码覆盖了select元素.

感谢大家的帮助,

干杯

dec*_*eze 19

defaultSelected属性不可设置,仅供参考:

Quote:

defaultSelected属性返回所选属性的默认值.
如果默认选择了一个选项,则此属性返回true,否则返回false.

我想你想要:

$('option[value=valueToSelect]', newOption).attr('selected', 'selected');
Run Code Online (Sandbox Code Playgroud)

即设置您要选择的selected属性option.


在不尝试修复代码的情况下,我大致会这样做:

function buildSelect(options, default) {
    // assume options = { value1 : 'Name 1', value2 : 'Name 2', ... }
    //        default = 'value1'

    var $select = $('<select></select>');
    var $option;

    for (var val in options) {
        $option = $('<option value="' + val + '">' + options[val] + '</option>');
        if (val == default) {
            $option.attr('selected', 'selected');
        }
        $select.append($option);
    }

    return $select;
}
Run Code Online (Sandbox Code Playgroud)

你似乎已经有很多行李和依赖,我不能告诉你如何最好地将选定的选项集成到你的代码中而不会看到更多,但希望这会有所帮助.


小智 5

脚本

 <script type="text/javascript">
    $(function(){
        $("#gender").val("Male").attr("selected","selected");
    });
 </script>
Run Code Online (Sandbox Code Playgroud)

的HTML

<select id="gender" selected="selected">
    <option>--Select--</option>
    <option value="1">Male</option>
    <option value="2">Female</option>
</select>
Run Code Online (Sandbox Code Playgroud)

点击这里更多细节


Sai*_*ala 5

就这样吧。

// Select by value
$('select[name="options"]').find('option[value="3"]').attr("selected",true);

// Select by text
//$('select[name="options"]').find('option:contains("Third")').attr("selected",true);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<html>
<body>
<select name="options">
      <option value="1">First</option>
      <option value="2">Second</option>
      <option value="3">Third</option>
</select>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)