我有一个包含 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/