jquery - 当前字段为空时使用 Shift+Tab 返回上一字段

标签 jquery html css

我有一个包含 3 个字段的表单:

  1. 电子邮件
  2. 密码
  3. 人数

如果 EMAIL 为空,我无法使用 press Tab 键转到 PASSWORD 字段, 只有电子邮件不为空才能转到下一个字段,实际上它有效,

当焦点在 PASSWORD 字段时,我想使用 Shift+Tab 返回到 EMAIL 字段。仅当 PASSWORD 不为空时有效。

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>Vertical (basic) form</h2>
  <form action="/action_page.php" method="post" name="subForm" id="subForm">
    <div class="form-group">
      <label for="email">Email:</label>
      <input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
    </div>
    <div class="form-group">
      <label for="pwd">Password:</label>
      <input type="password" class="form-control" id="password" placeholder="Enter password" name="password">
    </div>
     <div class="form-group">
      <label for="pwd">Number:</label>
      <input type="number" class="form-control" id="number" placeholder="Enter Number" name="number">
    </div>

    <button type="submit" class="btn btn-default">Submit</button>
  </form>
</div>
<script type="text/javascript">
function disableinputs(){
    $("#subForm input").prop('readonly', true);
}
$(document).ready(function(){
    disableinputs();
});
$(document).on('click','#subForm input',function(){
    $(this).prop('readonly', false);
});
$(document).on('focus','#subForm input',function(){
    $(this).prop('readonly', false);
});
$(document).on('focusout','#subForm input',function(){
    disableinputs();
});

</script>
<script type="text/javascript">
    $("#email").focusout(function () {
        if (!$(this).val()) {
            $(this).focus();
        }
    });
    $("#password").focusout(function () {
        if (!$(this).val()) {
            $(this).focus();
        }
    });
    $("#number").focusout(function () {
        if (!$(this).val()) {
            $(this).focus();
        }
    });
    </script>
</body>
</html>

如何实现?

最佳答案

请尝试以下操作:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>Vertical (basic) form</h2>
  <form action="/action_page.php" method="post" name="subForm" id="subForm">
    <div class="form-group">
      <label for="email">Email:</label>
      <input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
    </div>
    <div class="form-group">
      <label for="pwd">Password:</label>
      <input type="password" class="form-control" id="password" placeholder="Enter password" name="password">
    </div>
     <div class="form-group">
      <label for="pwd">Number:</label>
      <input type="number" class="form-control" id="number" placeholder="Enter Number" name="number">
    </div>

    <button type="submit" class="btn btn-default">Submit</button>
  </form>
</div>
<script type="text/javascript">
function disableinputs(){
    $("#subForm input").prop('readonly', true);
}
$(document).ready(function(){
    disableinputs();
});
$(document).on('click','#subForm input',function(){
    $(this).prop('readonly', false);
});
$(document).on('focus','#subForm input',function(){
    $(this).prop('readonly', false);
});
$(document).on('focusout','#subForm input',function(){
    disableinputs();
});

</script>
<script type="text/javascript">
    $("#email").focusout(function () {
        if (!$(this).val()) {
            $(this).focus();
        }
    });
    $("#password").focusout(function () {
        if (!$(this).val()) {
            $(this).focus();
            $("#email").focus();
        }
    });
    $("#number").focusout(function () {
        if (!$(this).val()) {
            $(this).focus();
            $("#number").focus();
        }
    });
    </script>
</body>
</html>

关于jquery - 当前字段为空时使用 Shift+Tab 返回上一字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51669052/

相关文章:

javascript - 处理触摸屏上的悬停事件

javascript - 将两个按钮设为开/关并控制下拉列表是否处于事件状态

javascript - React onClick 没有在第一次点击时触发,第二次点击按预期运行(简单的调试消息直到第二次点击才出现)

javascript - 代码在 codepen 上有效,但在我的网站上无效

javascript - jQuery off().remove() 或 .remove().off() 性能

jquery - 如何使用 Facebook FBML API 让 Ajax 与 ColdFusion 配合使用?

html - 如何使用 css 按类或 id 选择所有子元素?

javascript - 使用 javascript 在表格中动态添加一行 onblur 表格中的最后一行

android - 在这种特殊情况下如何处理多个设备?

javascript - 如果文件中标记为全局函数,jslint 不会查看它们吗?