通常,当页面中有表单时,在提交表单时,页面会默认滚动到表单的顶部。这是因为表单中某个元素的获取焦点(即光标聚焦于输入框中)会导致页面滚动。为了避免这个问题,我们可以使用CSS将焦点强制设置为某个非表单元素,例如文本段落或按钮。代码示例如下:
html { scroll-behavior: smooth; /可选/ }
This text will be focused on submit
在上述代码中,我们使用了CSS属性scroll-behavior: smooth,可以将页面滚动变得平滑。然后,将表单中的一个输入框的id设置为“form-element”,并在表单下方添加了一个文本段落。这个段落通过将tabindex设置为-1来变成可聚焦元素,但实际上它并不会接受焦点,因为它没有设置focusable属性。
最后,我们可以在表单提交时使用JavaScript来将焦点强制设置为文本段落。代码示例如下:
document.getElementById('form-element').addEventListener('blur', function() { document.getElementsByTagName('p')[0].focus(); });
通过这种方式,可以避免表单提交时导致页面滚动的问题。