Опция выбора набора jquery не влияет на HTML - PullRequest
0 голосов
/ 06 января 2011

У меня есть этот html

<select name="grid.SprintModel" id="grid_SprintModel">
  <option value="">&lt;None&gt;</option>
  <option value="739af096-a732-49ea-b9fc-d9220a25ed36">1. Meilenstein: Spezifikation</option>
  <option value="94749a48-fe3b-4f03-8757-4b07257f6c18">2. Meilenstein: Test</option>
  <option value="775efd45-b90f-43f9-84e6-6eb7cf1f05d7">3. Meilenstein: Qualitätsrelease</option>
</select>

Тогда у меня есть этот jquery

function onConfigureSprintSelection() {
    // find the dropdown first
    var $dropdown = $('select[name$=grid.SprintModel]');
    $('<option/>', { text: '<None>', value: '' })
        .prependTo($dropdown);
    // find the table row (tr) which is being edited
    var $tr = $dropdown.closest('tr:has(form)');

    // get the grid client object
    var grid = $tr.closest('.t-grid').data('tGrid');

    // get the data item bound to this table row
    var dataItem = grid.dataItem($tr);
    // set the value of the dropdown to select the proper item
    var value = dataItem.SprintModel ? dataItem.SprintModel.RowKey : '';
    $dropdown.val(value);
    var xyz = 1; // Just a row for a breakpoint
}

Если я отлаживаю jquery, то дерево dom изменяется правильно:

  • Параметр не вставлен.
  • Текущий параметр выбран = true

Но в html появляется только новый параметр <None>.Текущая выбранная опция не отображается.Всегда отображается: <None>

  • Проблема возникает только в Firefox.
  • В т. Е. Она работает нормально.
  • В Safari есть еще одна проблема.ни правильная опция не выбрана.Поле не заполнено.

?!?!

Я помню, в более ранних выпусках Firefox он работал корректно.У меня 3.6.13.

1 Ответ

1 голос
/ 06 января 2011

Ваша первая проблема в том, что вам нужны кавычки вокруг значения атрибута в этом селекторе:

$('select[name$="grid.SprintModel"]')

Далее, $('<option/>', { text: '<None>', value: '' }) создаст:

<option text="<None>" value="" />

а не:

<option value="">&lt;None&gt;</option>

То, что я предполагаю, вы хотели бы.

Наконец, я не могу найти метод jQuery с именем dataItem().

Извините, это не совсем точный ответ, однако сложности обычно возникают из-за нестандартного кода. Итак, взгляните поближе на jQuery, который вы используете, и попробуйте и упростите его.

...