...

  $(document).ready(function(){

        $('form').submit(function(){
                $('input#second').focus();
                return false;
        });

        $('#first').blur(function(){
                alert('blur');
        });
  });

...

  <form>
    <input id=first><br>
    <input id=second><br>
    <input type=submit>
  </form>

...
  1. 加载页面
  2. 单击第一个输入以使其获得焦点
  3. 按 Enter 键提交表单

然后会发生以下情况:

  1. $('form').submit() 被调用并且
  2. 它将焦点设置到 #second 输入并退出
  3. #first 失去焦点,#second 获得焦点,但是...
  4. $('#first').blur() 不被称为

这里有一个 现场演示.

我缺少什么?

谢谢

有帮助吗?

解决方案 2

根据 这条评论 在jquert bugtracker上,围绕问题的工作是使用

$('input#second')[0].focus();

代替

$('input#second').focus();

是否是bug还有待jq负责人来决定,但我猜是因为

  1. 该行为似乎是特定于浏览器的
  2. 没有理由对具有一个元素的数组调用 focus() 不应该与专门针对该元素调用它相同

感谢大家。夜晚。

其他提示

尼克是对的,你的 HTML 真的很混乱。您还没有结束输入标签或 br(s)。最重要的是,您应该将输入标记中的属性值放在双引号中。

这里的作品是 演示 http://www.jsfiddle.net/dAdG8/

<script type="text/javascript">
$(document).ready(function(){
    $('form').submit(function(){
         $('input#second').focus();
         return false;
    });

     $('#first').blur(function(){
         alert('blur');
     });

     // logging
     $('input').blur(function(){
         $('pre').append('blur, ' + this.id + '\n');
     });

     $('input').focus(function(){
         $('pre').append('focus, ' + this.id + '\n');
     });
});
</script>

<form>
     <input id="first" />
     <br />
     <input id="second" />
     <br />
     <input type="submit" />
 </form>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top