无法使用jQuery将焦点放在特定字段上

时间:2011-12-20 00:41:41

标签: javascript jquery

我正在使用jQuery验证一个简单的表单:

$('input:text').blur(function(){
  if ($(this).val() == "") {  
    $("#" + $(this).attr("name") + "_error").show();  
    $(this).css("border", "2px solid red");
    $(this).focus();
    return false;  
  }
});

$(this).focus();并未将注意力集中在当前字段上 - 是否有理由不允许这样做,或者我错过了什么?

更新

我一直在玩这个代码;当我尝试通过其id来选择特定字段时,焦点永远不会保留在调用blur事件的字段上;例如,如果我有5个字段,包含ID field1field2,... field5,并且具有以下代码:

$('input:text').blur(function(){
  if ($(this).val() == "") {  
    $(this).css("border", "2px solid red");
    $("#field4").focus();
    return false;  
  }
});

如果我使用tab键将焦点偏离字段1,那么焦点 会切换到#field4,但是,如果我选择了字段4,那么为空,焦点不会保留在字段4上,而是切换到字段5.这是预期/记录的行为吗?

2 个答案:

答案 0 :(得分:0)

尝试类似的事情;

setTimeout( $(this).focus(), 500 );

希望它适合你

答案 1 :(得分:0)

如果我没有弄错的话,你会在输入真的模糊之前得到这个事件。

会发生什么:

  • 用户点击输入
  • 您的方法被调用
  • 该方法将重点放在输入
  • 方法返回
  • 浏览器将模糊事件传播到“自身”并删除焦点

如果500ms有足够的时间让浏览器完成事件传播,则Sudhir的方法将起作用。 (但我认为这已经够了:))