jQuery中的焦点方法不起作用

jel*_*ela 6 javascript jquery

以下代码用于检查模糊字段中是否输入了4个数字.如果不是,则删除字段值,并且该字段被聚焦.删除工作正常,但对focus()的调用不起作用.

$('input.dateValue').live('blur',function(event){
  if (!(/(\d){4}$/.test($(this).attr('value')))) $(this).attr('value','').focus();
});
Run Code Online (Sandbox Code Playgroud)

为什么对焦点()的调用不关注该领域?

Jos*_*ber 18

由于blur事件在实际失去焦点之前触发,您无法立即使用.focus().你必须将它向下推到堆栈中,以便在input失去焦点后执行它.把你.focus()的计时器(没有必要延迟):

$('input.dateValue').on('blur', function(event)
{
    if ( ! /(\d){4}$/.test(this.value) )
    {
        var $this = $(this).val('');

        setTimeout(function (){
            $this.focus();
        }, 0);
    };
});?
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://jsfiddle.net/TdfFs/


更新:证明这确实工作在Chrome中,我又拨弄:http://jsfiddle.net/TdfFs/1/