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

Unable to give focus to specific fields with jQuery

本文关键字:字段 焦点 jQuery      更新时间:2023-09-26

我正在用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 field1, field2,…field5,并具有以下代码:

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

如果我把焦点移开字段1,当它是空的使用tab键,然后焦点切换到#field4,然而,如果我tab off字段4,当它是空的,焦点不留在字段4,但切换到字段5。这是预期的/记录的行为吗?

试试;

<>之前setTimeout($(this).focus(), 500);之前

希望它对你有用

如果我没有弄错的话,您可以在输入真正模糊之前获得事件。

结果是:

  • 用户点击出输入
  • 方法被调用
  • 方法将焦点赋给输入
  • 方法返回
  • 浏览器将模糊事件传播给"自身"并移除焦点
如果500毫秒的时间足够浏览器完成事件传播,Sudhir的方法就可以工作。(但我认为这是足够的:))