为什么 focus() 方法不起作用?

Why focus() method is not working?

相同的代码在 register.phtml 页面上用于 focus() 但此代码不适用于 personal.phtml.

<script>
    $(document).ready(function(){
        $("#rut").blur(function(){
            document.getElementById('error12').innerHTML ="";
            var Rut = $("#rut").val();
            var RemoveDotInRut = Rut.split('.').join("");
            var RemoveHypenInRut = RemoveDotInRut.split('-').join("");
            var freshString = RemoveHypenInRut.length;
            if(freshString<8 || freshString>9){
                document.getElementById('error12').innerHTML = "<?php echo $this->__('Please enter a valid Rut number.') ?>";
                $("#rut").val('');
                $("#rut").focus();
            }

        });
    });
    </script>

上面的脚本一切正常,但 focus() 不工作。为什么?

一旦模糊函数结束,焦点就会丢失,所以在模糊函数内设置焦点没有效果

替换

    $("#rut").focus();

setTimeout(function() {
    $("#rut").focus();
}, 0);

这将 "re-focus" 下一个事件循环中的元素

使用以下代码:

$("#focusedDiv").focus(function () {
    ....
});

使用那个:Demo

将您的 .focus() 移到那里:

$(this).delay(0).queue(function() {
   $(this).focus().val("").dequeue();;
});

另外,我已经优化了你的代码。 $("#rut") 已替换为 $(this)

点击here

从这里开始尝试。