2016-03-15 138 views
1

在请求页面之前最后一次聚焦的刷新之后,是否可以通过某种方式重新对焦输入字段?在页面刷新页面后重新对焦输入字段

我在我的WebPage中有一个Wicket窗体,在这个窗体中有相当多的输入字段(比如文本字段),用户可以用来过滤我的数据视图。但是,例如,当用户关注第二个输入字段,然后点击数据视图中的“转到下一页”时,他失去了焦点,但由于可访问性,有必要重新调整第二个输入字段的焦点。

我的想法是先标记与jQuery的输入栏“恢复为关注焦点”聚焦时:

服务器上更新搜索与“恢复为关注焦点”的标签元素
$("input").focus(function() { 
    $("input").removeAttr("regain-focus"); 
    $(this).attr("regain-focus", "regain-focus"); 
}); 

然后 - 但这是一部分,我不知道该怎么做... - 用“自动对焦”标记相应的组件:

input.add(AttributeModifier.append("autofocus", "autofocus")); 

使用JavaScript重新聚焦:

$('[autofocus]').focus(); 

回答

2

既然你有JavaScript的经验,那么完成客户端:$(document).on('focusin', 'input textarea', function(event) {localStorage.setItem('focus:'+location.pathname, event.target.id)})会更简单,然后使用基于jQuery.ready()的逻辑来读取条目并使用它。

+0

这是一个不错的解决方案,谢谢! :) – RockaRolla

0

当页面DOM /元素在请求/刷新/ ajax调用之间发生变化时,最好使用使用optimal-select的CSS选择器来存储元素的唯一标识符,并使用JQuery选择器再次找到焦点设置。我在NoWicket Web框架中使用它来记住ajax调用中的焦点元素。 Example JS code here