尝试以编程方式设置焦点不适用于Firefox

时间:2016-03-10 11:38:34

标签: javascript jquery firefox

我在Firefox 中遇到问题尝试使用 jquery javascript将焦点设置为控件。虽然我的具体问题非常复杂,但即使是下面的简单测试用例也不适用于我。找到输入,其值已更改但输入未聚焦 仅限Firefox出现问题

在Windows 7上尝试使用Firefox 44.0.2 它适用于MS IE 10和Chrome

./reset.sh --ios --real-safari
$().ready(function() {
  $("#I").val(3);
  $("#I").focus(); // JQuery focus - does not work
  
  var ctl = document.getElementById('I')
  ctl.value='DOM';
  ctl.focus(); // DOM Native focus - does not work
})

2 个答案:

答案 0 :(得分:1)

我认为将重点放在Firefox上存在问题,有一种解决方法涉及使用focusout。见下文:



$().ready(function() {

    $('#I').val(3);

    $('#I').focusout(function() {
        setTimeout(function() {
            $(this).focus();
        }, 0);
    });

    $('#I').focus();

})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" id="I" />
&#13;
&#13;
&#13;

答案 1 :(得分:1)

这种准备活动风格:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>This should work</title>
</head>
<body>
    <div class="form-group form-animate-text col-lg-6 col-xs-12 col-md-6">
        <select class="form-text" id="val_equipfc" name="val_equipfc" onChange="checkOption(this)" required>
            <option value="A">Yes</option>
            <option value="B">No</option>
        </select>
        <span class="bar"></span>
        <label><span style="color:red">*</span>With Equipment?</label>
    </div>

    <div class="form-group form-animate-text col-lg-6 col-xs-12 col-md-6">
        <input type="text" class="form-text" id="val_equipnofc" name="val_equipnofc">
        <span class="bar"></span>
        <label><span style="color: red">*</span>Number of Equipment/s</label>
    </div>

    <script type="text/javascript">
        function checkOption(obj) {
            var input = document.getElementById("val_equipnofc");
            input.disabled = obj.value == "B";
        }
    </script>
</body>
</html>

很久以前就弃用了,最好不要使用它。

您可以使用$().ready(function() { 属性:

&#13;
&#13;
autofocus
&#13;
$(document).ready(function() {
  $('#I').val(3);
});
&#13;
&#13;
&#13;

而不是jQuery尝试触发DOM <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type=text id=I autofocus>事件:

&#13;
&#13;
.focus()
&#13;
$(document).ready(function() {
  $('#I').val(3);
  $('#I')[0].focus();
});
&#13;
&#13;
&#13;