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

时间:2012-04-23 09:42:39

标签: javascript jquery error-handling focus settimeout

我有一个表单,当提交时(空字段)显示前端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而不适用于Firefox。在Firefox中,尽管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> 

1 个答案:

答案 0 :(得分:2)

我不明白你为什么要集中一个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/