Когда я снова нажимаю в браузере, почему на кнопке отсутствует атрибут «отключен»? - PullRequest
0 голосов
/ 20 марта 2020

Я go на страницу. Определенная кнопка (назовем ее кнопкой A), которая позволяет пользователю продолжить извлечение, в настоящее время отключена (как и должно быть).

Я нажимаю другую кнопку, которая ведет меня на другую страницу, чтобы ввести данные моего адреса , После того, как я это сделаю, отключенная кнопка на предыдущем будет активна после того, как меня туда отправят.

Однако вместо того, чтобы заполнять свой адрес, я нажимаю кнопку НАЗАД браузера и возвращаюсь к предыдущему экрану. , Кнопка А больше не отключена. У него даже нет отключенного атрибута, когда я проверяю через браузер. Если я обновлю sh браузер, кнопка A снова отключится.

Это код кнопки, часть simple_form_for

= f.button :button, "Continue to checkout options", class: "btn btn-primary btn-rounded shopping-methods-continue js-checkout-submit", disabled: @basket.requires_address?

@basket.requires_address? не вызывается, когда я go НАЗАД.

Я попробовал жесткое кодирование disabled: "disabled", чтобы посмотреть, что произойдет, но у него все еще нет атрибута отключен после нажатия НАЗАД.

Есть ли проблема с кэшированием этой страницы?

Я копался в проекте, в частности, на стороне javascript вещей. js-checkout-submit не зависит от кода.

Есть идеи у кого-нибудь?

1 Ответ

0 голосов
/ 25 марта 2020

Итак, мы решили проблему с помощью turbolinks.

Мы дали кнопке новый класс js-disable-button.

И затем добавили эти инструкции внизу кода (coffeescript ):

$(document).on 'turbolinks:load', () ->
  if "#{@basket.requires_address?}"
    $('.js-disable-button').attr('disabled': 'disabled');

Таким образом, проверка @basket.requires_address? выполняется в основном при каждой загрузке страницы, даже при нажатии НАЗАД. И кнопка отключается, если проверка возвращает true.

Это обеспечило решение, однако я так и не понял, почему проблема возникла в первую очередь.

...