【问题标题】:Why focus() method is not working?为什么 focus() 方法不起作用?
【发布时间】:2015-12-10 01:04:08
【问题描述】:

相同的代码在 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() 不起作用。为什么?

【问题讨论】:

    标签: javascript magento-1.8


    【解决方案1】:

    一旦模糊功能结束,焦点将丢失,因此在模糊功能内设置焦点无效

    替换

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

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

    这将在下一个事件循环中“重新聚焦”元素

    【讨论】:

    • 嗨 Jaromanda,你能告诉我这个函数必须在我的脚本中调用吗?
    • 如果你快点的话,我会说下午 3:30 左右
    【解决方案2】:

    使用下面的代码:

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

    【讨论】:

    • 分配焦点事件监听器有什么帮助?
    【解决方案3】:

    使用它:Demo

    把你的.focus() 移到那里:

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

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

    【讨论】:

    • @AmitKushwaha。不客气。此外,您可以使用setTimeout (@Jaromanda X 说过)来做到这一点。 jsfiddle.net/ys4go2n7/8
    • 哦,对不起,我没听懂。对不起
    【解决方案4】:

    点击here

    从基础开始尝试。

    【讨论】:

    • 这不是答案,而且 w3schools 在这里不太受欢迎
    猜你喜欢
    • 2017-12-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 2018-08-06
    • 2012-01-14
    • 2015-11-07
    • 1970-01-01
    相关资源
    最近更新 更多