5

我正在通过 jQuery ajax 方法为我的下拉列表生成选项,并由 db 填充它。

$.ajax({
        type: "POST",
        url: pageUrl + '/FillAssignee',
        data: {},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
                        for (var i = 0; i < response.d.length; i++) {
                            $('#SelectAssignee').append($("<option></option>").val(response.d[i]['Value']).html(response.d[i]['Text']));
                        }
                        if (response.d.length > 0) 
                        {
                          $('#SelectAssignee>option:eq(1)').attr('selected', true); 
                          alert($('#SelectAssignee').val()); //this line giving me correct value but value not showing in dropdown as selected in ie
                        }
                  }            
      });

它工作正常。唯一的问题是在 IE 上默认没有选择第一个值。所以为此我使用了很多选项

1. $('#SelectAssignee').val();
2. $('#SelectAssignee option:first').attr('selected','selected');
3. $('#SelectAssignee option:first').prop('selected',true);

我怎样才能让它工作?

4

7 回答 7

1

尝试这样的事情

 var selObj = document.getElementById('SelectAssignee');
 selObj.selectedIndex = 0;
于 2012-11-15T07:13:52.250 回答
0

您的逻辑是说您的目标是选择菜单中的第一个元素,但是,您正在将新选项添加​​到选择输入的 END 中。您要么需要将 .append 更改为 .prepend,要么在将 selected 属性设置为 true 时定位最后一个选项

于 2012-11-07T06:01:20.983 回答
0

尝试设置为属性而不是属性。

$('#SelectAssignee').append($("<option />", { value: response.d[i]['Value'], html: response.d[i]['Text'] }));
于 2012-11-07T06:02:10.243 回答
0

我最好的猜测是这应该有效。虽然,这似乎是一个肮脏的黑客,但有一次我不得不求助于这个并且它奏效了。

setTimeout( function() {
    $('#SelectAssignee option:first').prop('selected', true);
    $('#SelectAssignee').trigger('change');
}, 1000 );

尝试将此代码块放在成功回调中,在 for 循环之后。

于 2012-11-07T06:47:58.900 回答
0

在for循环之后,尝试以下条件

if (response.d.length > 0) { $('#SelectAssignee>option:eq(0)').attr('selected', 'selected');}
于 2012-11-15T06:51:31.347 回答
0

您能否尝试以下解决方案。

在for循环之后,只需添加这个

if (response.d.length > 0) {
   $('#SelectAssignee>option:eq(1)').attr('selected', true);
}
于 2012-11-07T06:21:54.320 回答
0

尝试将值显式设置为第一个选项的值

$('#SelectAssignee').val(response.d[0]['Value']);
于 2012-11-15T07:40:30.860 回答