当前位置: 首页 > 知识库问答 >
问题:

模式关闭后自动对焦回到旧框

唐恺
2023-03-14

如果这是重复的,我很抱歉,但是我找不到任何东西。

我对Javascript非常陌生,仍在努力理解事件侦听器和代码是如何运行的。

除此之外,我还有一个引导模式窗口,当一个数字被放入输入框并发布时,它会弹出。

在模态弹出之前,输入框上有一个自动对焦。

我在这里找到了关于如何将自动对焦放在模态窗口上的按钮上的帮助,它工作得非常好,如下所示:

$('.modal').on('shown.bs.modal', function() {
  $(this).find('[autofocus]').focus();
});

我的问题是,当模式窗口关闭时,我无法将自动对焦恢复到输入框。

我尝试过不同的版本,这两个是我的主要想法:

$("#no").click(function() {
  $(this).find('[autofocus]').focus();
});

$("#no").click(function() {
  $("staffID").focus();
});

其中工作人员ID是输入框的id。

但它不会将焦点放回输入框。#no id是模态上的一个id,因此如果按no,您希望返回原始站点,并将焦点放在输入上。

有人能给我指出正确的方向吗?

被问及超文本标记语言,在这里(忽略冰岛语):

<!--CLOCKIN INPUT FORM-->
<form id="staffIdForm" method="post" action="" class="clockin-form">
      <input id="staffID" type="text" name="starfsmannanumer" class="clockin-box" placeholder="Starfsmannanúmer" autofocus/>
      <button id="clockIn" type="button" class="btn btn-success">Stimpla</button>
</form>

<!-- WELCOME MODAL -->
<div class="modal fade" id="welcome-modal" role="dialog" aria-labelledby="welcomeModalLabel" aria-hidden="true">
     <div class="modal-dialog" role="document">
           <div class="modal-content">
                 <div class="modal-header">
                      <h5 class="modal-title" id="welcomeModalLabel">
                          Góðan daginn <span id="nafn"></span>
                      </h5>
                      <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                          <span aria-hidden="true">&times;</span>
                      </button>
                 </div>
                 <div class="modal-body">
                     <p>Innstimplun skráð <span id="time"></span> þann <span id="date"></span></p>
                     <p>Viltu skrá þig í hádegismat?</p>
                 </div>
                 <div class="modal-footer">
                     <button id="no" type="button" class="btn btn-secondary" data-dismiss="modal" autofocus>Nei</button>
                     <button id="yes" type="button" class="btn btn-success">Já</button>
                 </div>
            </div>
      </div>
</div>

运行该问题需要以下javascript:

$("#clockIn").off('click').on('click', function () {
     $("#staffIdForm").submit();
});


$(function getEmployee() {
$("#staffIdForm").on('submit', function(e) {

    var staffId = (document.getElementById("staffID").value);
    console.log(staffId);
    $.post("Attendance/Home/ClockIn", { starfsmannanumer: staffId }, function(data, status) {
        console.log(data);
        $("#nafn").text(data.name);
        $("#clock-out-nafn").text(data.name);


        $(function () {
            //Display time in message
            var dt = new Date();
            document.getElementById("time").innerHTML = dt.toLocaleTimeString('en-GB');
            document.getElementById("clock-out-time").innerHTML = dt.toLocaleTimeString('en-GB');

            //Date message with Icelandic names
            var monthNames = [
                "jan&#250;ar", "febr&#250;ar", "mars", "apr&#237;l", "ma&#237;", "j&#250;n&#237;",
                "j&#250;l&#237;", "&#225;g&#250;st", "september", "okt&#243;ber", "n&#243;vember", "desember"]
            var day = dt.getDate();
            var monthIndex = dt.getMonth();
            document.getElementById("date").innerHTML = day + ". " + monthNames[monthIndex];;
            document.getElementById("clock-out-date").innerHTML = day + ". " + monthNames[monthIndex];;


            //Either check in or out message or error
            if (data.userId == "-1") {
                $("#invalid-staff-id").fadeIn('slow', function () {
                    $("#invalid-staff-id").delay(2000).fadeOut();
                });
            }
            else if (data.timeIn != null && data.timeOut == null) {
                $("#welcome-modal").stop(true).modal('show');
            }
            else if (data.timeIn != null && data.timeOut != null) {
                $("#clock-out-message").fadeIn('slow', function() {
                    $("#clock-out-message").delay(5000).fadeOut();
                    //TODO: L�ta �tstimplunarskilabo� hverfa ef �tt er � takka
                    //TODO: Autofocus � 'Nei' takkann
                });
            }
        })
        document.getElementById("staffID").value = "";
    });

    e.preventDefault();
});
});

$('#welcome-modal').on('shown.bs.modal', function () {
    $(this).find('[autofocus]').focus();
});

$('#welcome-modal').on('hidden.bs.modal', function () {
    $("staffID").focus();
});

我认为这就是所需要的。

共有1个答案

贡光明
2023-03-14

将输入焦点绑定到模态关闭。工作解决方案将是:

$('#myModal').on('hidden.bs.modal', function () {
  $('#myInput').focus();
});

还要注意,这里:

$("#no").click(function() {
  $(this).find('[autofocus]').focus();
});

这是您单击的元素-似乎不正确尝试在其中查找其他DOM元素

 类似资料:
  • 场景是:您在窗口(a)中,单击按钮/链接启动打印过程,然后打开一个新窗口(B),其中包含要打印的内容,打印对话立即显示,如果您单击窗口(B)的取消按钮,那么您应该可以再次打印,但当您单击窗口(B)的打印按钮打印时,您可以打印,但窗口(a)的按钮不能再次继续打印。给我一些解决方案…!!!在chrome,Firefox和internet explorer上工作

  • 在我的应用程序中,当我从后台回来时,我的活动会自动接近,并且它总是显示以前的活动。示例:我用活动A启动应用程序 }

  • 我想在我的编码中添加对话框。对话框可以弹出。假设用户按下ok按钮后对话框将关闭,但对话框将自动关闭。这是我的密码。有什么问题吗?

  • 我有一个带有

  • 我正试着做这样的事。 当用户单击“+”图标时,将显示模态内部的表单。 并且当用户点击“添加成员”按钮时,模态会关闭,用户输入的输入值会显示在“+”图标的正下方。问题是,当用户再次点击“+”图标时,表单会显示出来,但当点击“添加成员”按钮时,以前的输入值会被用户输入的最新值所改变。 “+”图标 表单代码段 单击“添加成员”按钮时(我只尝试显示firstname) 我尝试了console.log(数据