jquery settimeout 和 .focus() 一起在 Firefox 浏览器中不起作用

jquery settimeout and .focus() together not working in firefox browser

本文关键字:Firefox 浏览器 不起作用 一起 settimeout focus jquery      更新时间:2023-09-26

我有一个表单,当提交(空字段)时,它会在前端jsp中显示弹簧验证的错误。我需要将显示集中在前端显示的第一条错误消息中。从表单生成的代码(通过查看源代码):例如div 元素中包含的 2 条错误消息。我需要将其集中在第一条错误消息上。

      <div id="userid.errors" class="lp">User id is missing</div>
      <div id="age.errors" class="lp">age is missing</div>

我尝试了下面的jquery代码,但它仅适用于IE而不是火狐。在火狐中,即使css样式处理正确,焦点也不起作用。

我确定语法和逻辑是正确的 - 有人可以帮助我为 Firefox 浏览器修复它吗?

<script type="text/javascript" src="/scripts/jquery.min.js"></script>
<script type="text/javascript" src="/scripts/jquery.validate.js"></script>
 <script type="text/javascript">
 $(document).ready(function() {
$("[id$='.errors']:first").css("background-color","#FFFFCC");
     setTimeout(function(){
     $("[id$='.errors']:first").focus();
    },300);
 });
 </script> 

我不明白你为什么要集中一个div以及你的期望,通常你不能聚焦一个div,但你可以这样做,

$(document).ready(function() {
$("[id$='.errors']:first").css("background-color","#FFFFCC");
     setTimeout(function(){
         $("[id$='.errors']:first").attr("tabindex",-1).focus();
         alert(document.activeElement.innerHTML+ "is focussed");
    },300);
 });​​

http://jsfiddle.net/x7euD/3/