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

値を最初のオプションの値に明示的に設定してみてください

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

あなたのロジックは、選択メニューの FIRST 要素をターゲットにしていると言っていますが、選択入力の END に新しいオプションを追加しています。.append を .prepend に変更するか、選択した属性を 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

以下の解決策をお試しください。

forループの後に、これを追加するだけです

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

forループの後、次の条件を試してください

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

私の最善の推測は、これがうまくいくはずだということです。これは汚いハックのように思えますが、これに頼らなければならない場合があり、うまくいきました。

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

for ループの後、成功のコールバックにこのコード ブロックを入れてみてください。

于 2012-11-07T06:47:58.900 に答える