Отправка формы настроек через «Enter» происходит нативно

На ветке main в Discourse (61e0db0e80) при отправке формы настроек пользователя нажатием клавиши «Enter» (например, после изменения имени) форма отправляется стандартным способом.

Это приводит к GET-запросу на ту же страницу, и изменения не сохраняются в базе данных.

Шаги для воспроизведения:

  1. Перейдите на страницу настроек.
  2. Введите или измените имя.
  3. Нажмите Enter.
  4. Страница перезагружается.

У меня на Meta воспроизвести не удалось, только что проверил — всё работает как положено.

Не могли бы вы проверить это тоже?

Конечно, мне удалось воспроизвести это в:

  • Firefox ESR v140.5.0esr — 64-разрядная версия в чистом профиле (без плагинов, без пользовательских настроек)
  • Chromium v142.0.7444.175 со всеми отключёнными плагинами

Я использую Debian 13, и оба браузера получены из репозитория Debian.

1 лайк

Очень странно, у меня в браузере не воспроизводится (Firefox 45.0.2 / Chromium: 143.0.7499.40).

Когда вы говорите

мне кажется, что вы тестируете это не на Meta?

Кстати, я могу воспроизвести это на meta :raised_hand:

Когда я ввожу своё имя и нажимаю «Enter», страница перезагружается, а значение очищается.

Предполагаю, что изменения не были сохранены, так как я не успел нажать эту кнопку до перезагрузки страницы?

Дополнение: Проблема наблюдается и в Firefox, и в Chrome (на рабочем столе под Windows).

1 лайк

Окей, хорошо знать. Интересно, почему у меня не воспроизводится :confused:

Не знаю :man_shrugging: :slight_smile:

Но если бы вы могли воспроизвести проблему, что бы вы искали? Я могу попробовать снова и посмотреть, смогу ли предоставить вам информацию.

ETA: Я заметил, что при перезагрузке к URL на короткое время добавляется «?», если это имеет значение?

1 лайк

Это на 100% воспроизводится в чистой среде dv.

В последней версии Chrome:

dv new enter-submit
http://enter-submit.localhost/session/user1/become
перейдите по ссылке
http://enter-submit.localhost/u/user1/preferences/account
измените имя
нажмите Enter

Страница перезагружается.

Как вы относитесь к такому решению @martin / @j.jaffeux в /frontend/discourse/app/controllers/preferences.js:

      
    @action
    preventSubmit(event) {
       event?.preventDefault();
    }
    <form class="form-vertical" {{on "submit" this.preventSubmit}}>
       {{outlet}}
     </form>
   </section>

Довольно странно, что в этом конкретном случае у нас есть форма, которая на самом деле не является формой.

2 лайка

Я имел в виду «со всеми расширениями браузера отключёнными» (я использую множество вещей, которые могут нарушать исходное поведение веб-сайта).

Я тестировал оба варианта и на Meta, и в чистой новой среде разработки.

1 лайк