JSON: выбранный параметр не работает в IE, а работает в Firefox - PullRequest
4 голосов
/ 20 декабря 2011

У меня следующий запрос к JSON: выбранная опция не работает в IE, а работает в Firefox.

У меня есть пример данных, таких как:

 var columnDefs = [...
 {"name":"childPerformancePrice", "label":"Cosell Price", "type":"int", "control":"select", "options":performancePrices, "align":"left", "default":"", "required":false,"size": 6},
 ...]

Раскрывающийся список производительности, например:

function getPerformancePrices(){
    ......
      $.getJSON("?data=performancePrices", function(list) {
          performancePrices.push([0, ""]);
          $.each(list, function(index, item) {
            performancePrices.push([item.id, item.description]);
            performancePrices.sort();

          });
        ...
      });
  }

пример данных JSON, таких как JSON.stringify(columnDefs[index]):

{"name":"childPerformancePrice", "label":"Cosell Price", "type":"int", "control":"select", "options":[[0,""],[15000,"Band 1"],[15001,"Band 2"],[15002,"Band 3"]],"align":"left", "default":"", "required":false,"size": 6}

Вопрос: почему выбранная ниже опция во время редактирования не работает (то есть, не выбирается правильно в IE) в IE, покахорошо работает в Firefox?

 function selectCell(oColumnDef, value) {
    var oSelect = createNamedElement("select", oColumnDef["name"]);
    if (value == undefined) {
      value = "";
    }
    $.each(oColumnDef["options"], function(index, item) {
        var oOption = document.createElement("option");
        oOption.value = item[0];
        oOption.text = item[1];
        if (item[1] == value) {
          oOption.selected = true;
        }
        oSelect.options.add(oOption);
    });

1 Ответ

1 голос
/ 20 декабря 2011

Единственное, о чем я могу думать, это то, что, поскольку он работает в FF, но не в IE, есть кое-что о том, как вы создаете эти опции, которые не нравятся последним. Поскольку вы уже используете jQuery, попробуйте изменить это:

var oOption = document.createElement("option");
oOption.value = item[0];
oOption.text = item[1];
if (item[1] == value) {
     oOption.selected = true;
}
oSelect.options.add(oOption);

К этому:

var oOption = $("<option />",  { "value": item[0],
                                 "text": item[1],
                                 "selected": item[1] === value
                               });
$(oSelect).append(oOption);

С предположением, что jQuery сгладит все причуды IE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...