这是一个rails controller重定向语句。
redirect_to "controller_action_path", error: err.to_s
该语句在浏览器的页面源中生成以下HTML。
<div class="alert alert-danger alert-error" role="alert">"Your alert here"</div>
问题:如何围绕页面顶部显示的Flash响应消息创建焦点。 尝试过的解决方案:
<% if flash[:error] %>
<%= javascript_tag do %>
$('.alert-danger').focus();
<% end %>
<% end %>
如果HTML元素具有id标记,则此方法有效。也许如果HTML元素也有类。看起来好像静态元素可以获得焦点,但是,由于flash框架生成了一个动态生成的元素,因此它是一个动态生成的元素,或者在尝试应用焦点时没有在表单上呈现,或者它无法在页面的HTML中找到该元素。由于调试器返回$('.alert-danger').focus();
答案 0 :(得分:0)
Rails生成静态html并将其发送到客户端,因此Rails生成的任何内容都会与所有其他HTML同时呈现。
尝试将控制器代码更改为redirect_to "controller_action_path", alert: err.to_s
,并将包装jQuery函数的条件更改为<%= if flash[:alert] %>
。对于:error
http://api.rubyonrails.org/classes/ActionController/Redirecting.html
redirect_to
不是有效选项
我也不认为jQuery的条件是必要的。如果没有错误,那么无论如何都不应该有错误类的可见标记。
默认情况下,$.focus()
对每个元素都不起作用https://api.jquery.com/focus/