Как перехватить отправку формы в websocket-соединении?
Я "унаследовал" фрагмент кода из приложения для чата. Я хотел бы добавить некоторые пользовательские проверки пользовательского ввода при отправке, позволяющие при необходимости прервать отправку на стороне клиента.
Я создал javascript-функцию обработчика отправки для выполнения проверок и преобразований, включая preventDefault в качестве первой инструкции:
async handleSubmit(event) {
event.preventDefault(); // Prevent default form submission
...
Я привязал обработчик к форме:
<form
class="pg-chat-input-bar"
ws-send
@submit="handleSubmit($event)"
enctype="multipart/form-data"
>
Однако, несмотря ни на что, форма отправляется немедленно после нажатия кнопки отправки. Сервер получает форму параллельно с выполнением обработчика или до него. Я могу оценить, что обработчик запущен и выполняет то, что должен, но, к сожалению, форма уже отправлена.
Я пробовал @submit.prevent, @submit.stop
и даже объединил оба, но это не изменило результата. Я нашел много сообщений с просьбой перехватить / прерывать отправку формы, но решения такие же простые, как и те, что я пробовал. Что я делаю не так?
Поскольку я не начинаю с нуля, я бы предпочел как можно меньше изменять код и использовать то, что уже есть. Может ли это быть связано с тем, как работает WebSocket? Я не слишком хорошо с этим знаком.
Благодаря добавлению задержки к триггеру (приведенный ниже код в атрибутах формы) все работало должным образом при вызове обработчика и предотвращении поведения по умолчанию.
hx-trigger="submit delay:1ms"