在Rails 5.2中,我使用form_with帮助器创建了一个表单(我的第一个表单)。
默认情况下,这是remote: true
。
此表单包含一个带有autofocus="autofocus"
的输入。
在验证错误后,相同的表格将以ajax返回。 我用它来更新表格:
document.addEventListener('ajax:success', (event) => {
const [data, status, xhr] = event.detail;
const form = document.getElementById('form-signin')
form.parentNode.innerHTML = xhr.responseText
})
这有效,但是自动对焦现在不起作用。 (第一次)
是否可以自动对焦,还是应该在上面的js代码中手动执行此操作?
一切都适用于local:true
,但是由于这不再是默认设置,所以我想尝试新的方法。没有太多关于如何正确处理ajax响应的文档。 (起初我以为Turbolinks会为我做这件事)
解决方案: 下面的答案有效,但是我找到了一个更好的解决方案,使它变得容易得多。它无需编写自定义javascript就可以工作: https://github.com/turbolinks/turbolinks-rails/issues/40 https://github.com/jorgemanrubia/turbolinks_render
答案 0 :(得分:2)
页面加载时会触发自动对焦,因此如果页面已加载,您将无法获得预期的结果。
当ajax调用从回调中完成时,您可以手动将第一个自动聚焦元素聚焦,例如:
%B