У меня есть обработчик событий для отправки формы, который отправляет данные в HTTP-запросе, а затем после получения ответа сбрасывает форму. Однако кажется, что свойство target
объекта события изначально доступно, но быстро устанавливается на ноль. Приведенный ниже пример - это моя попытка свести проблему к минимуму (чтобы сделать ее воспроизводимой, я использовал setTimeout
вместо HTTP-запроса). Он показывает, что хотя объект события изначально имеет элемент формы в качестве целевого свойства, после некоторого периода ожидания целевое свойство получает значение null. Это мешает мне сбросить форму после завершения HTTP-запроса.
import { LitElement, css, html } from "lit-element";
import { render } from "lit-html";
class TestElement extends LitElement {
submitForm(e) {
e.preventDefault();
console.log(e.target); // successfully logs <form> element
window.setTimeout(() => {
console.log(e); // logs event, with target now set to null
e.target.reset(); // "Uncaught TypeError: Cannot read property 'reset' of null"
}, 2000);
}
render() {
return html`<form @submit=${this.submitForm}>
<div class="form-controls">
<label for="name">Name</label>
<input type="text" id="name" name="name" />
<label for="address">Address</label>
<input type="text" id="address" name="address" />
<button type="submit">submit</button>
</div>
</form>`;
}
}
customElements.define("test-element", TestElement);
render(html`<test-element></test-element>`, window.document.body);