У нас есть интерфейс, который отображает поля данных в обычных элементах HTML и только выставляет форму ввода, когда пользователь нажимает на элемент отображения.HTML-форма для автоматического скрытия и отправки на blur
<div class="header-container">
<header class="header-displayName"></header>
<form class="form" style="display: none;">
<section><label>First Name</label>
<span><input type="text" class="form-input" placeholder="first name"></span></section>
<section><label>Last Name</label>
<span><input type="text" class="form-input" placeholder="last name"></span></section>
<div class="hidden-submit"><input type="submit" tabindex="-1"/></div>
</form>
</div>
В приведенном выше случае, пользователь нажимает на элемент заголовка, который был проводную в JQuery, чтобы скрыть себя и показывать форму. При нажатии клавиши Enter форма также скрывается и отображает заголовок, одновременно делая запрос Ajax для отправки данных формы.
Проблема заключается в том, как улучшить пользовательский интерфейс следующим шагом, когда пользовательская табуляция или щелчок по форме в другом месте документа будет иметь форму, в которой она должна быть скрыта и отправлена, как обычно.
Я попробовал событие размытия для формы, но позже понял, что это просто пузырь событий размытия от отдельных элементов ввода внутри, что приводит к тому, что форма скрывается/отправляется только при потере фокуса ввода firstName; у пользователя нет возможности работать с входом lastName. Конечно, если бы я попробовал stopPropagation() в каждом поле ввода, форма никогда не стирается, поскольку у нее нет собственного размытия.
Как я могу надежно захватить событие размытия на уровне формы?
Чтобы обеспечить больше контекста для этой реализации, это многократно используемый компонент пользовательского интерфейса, поэтому он не статически размещен в одном документе страницы. Они могут появляться несколько раз в одном документе. Они не должны проводить проводку на уровне документа, что потенциально может испортить другие компоненты. Все поля в таких формах также являются необязательными, поэтому нельзя рассчитывать на заполнение всех полей перед отправкой.
Вы можете привязать 'click' к' document' в сочетании с 'stopPropagation' в элементах формы. – nrodic
просто не отправляйте форму, если ваши другие текстовые поля пусты, когда все поля заполнены содержимым, а затем связывают событие click на документе, чтобы отправить форму. – Jai
Я отредактировал, чтобы предоставить больше контекстного фона о характере этих пользовательских интерфейсов. Благодарю. – icelava