Почему мой код не работает без этого окна предупреждения? - PullRequest
0 голосов
/ 19 сентября 2011

В одном из представлений редактирования моего приложения Grails у меня есть несколько цепочек раскрывающихся списков.Когда вызывается представление редактирования, все значения для редактируемого объекта заполняются правильно, но ни одно из раскрывающихся окон не заполняется, потому что они заполняются через AJAX через функцию change jQuery.

Чтобы исправить это, я использовалКод ниже, но есть одна странная вещь.Я использовал окно предупреждения, чтобы увидеть, какое значение имело место при написании кода.С окном оповещения все происходит так, как я ожидаю, но как только я убираю окно оповещения, строка кода, которая повторно выбирает ранее очищенное значение, перестает работать.

<g:javascript>
  $(document).ready(function() {
    cargoDestinationValue = $("#cargoDestination\\.id").val(); //Gets value shown in the selection box. This box is second in the chain.
    $("#account\\.id ").trigger('change'); //Triggers a change.  This box is first in the chain. when a change is detected an AJAX call is made via some other JavaScript and that populates the second selection box in the chain, but doing so clears the selected value.
    alert(cargoDestinationValue); //If this is not here the next line does not seem to be doing what it is supposed to do.
    $("#cargoDestination\\.id").val(cargoDestinationValue); //This re-selects the value that was previously cleared.
  })
</g:javascript>

Что здесь за дело?

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Событие, которое вы запускаете, ставится в очередь, поэтому, если у вас нет предупреждения, событие не будет обработано, пока вы не выйдете из функции.

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

Вы должны обработать деталь после предупреждения в коде, который получает данные из вызова AJAX, что, конечно, означает, что вам нужно где-то сохранить выбранное значение, чтобы код мог до него добраться.

0 голосов
/ 19 сентября 2011

Может ли быть так, что #cargoDestination не существует в тот момент, когда вы пытаетесь установить значение (без окна предупреждения), но будет загружаться / вставляться, пока вы нажимаете «ОК», если окно предупреждения отображается на экране?

У меня была похожая проблема несколько дней назад ...

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