Jquery Focus不适用于单个输入按钮单击是唯一有问题的是输入字段,如下面的代码所示:
不仅适用于单个输入字段。
$(document).ready(function(){
$("#val").change(function(){
$("input").focus();
$("p").html("focus event triggered");
});
$("#btn1").click(function(){
$("input").focus();
$("p").html("focus event triggered");
});
$("#btn2").click(function(){
$("input").blur();
$("p").html("blur event triggered");
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
Enter your name: <input id="val" type="text">
<br><br>
<button id="btn1">Trigger focus event</button>
<button id="btn2">Trigger blur event</button>
<p style="color:red"></p>
</body>
</html>
我在下面添加了jsfiddle链接:https://jsfiddle.net/Manishankarg/0ony2ovb/
答案 0 :(得分:4)
如果您要实现的目标是即使单击制表符也能保持焦点,那么您将不得不使用keydown()而不是change()。
实际上你的代码工作正常。只有在第二次按Tab而不更改输入时才触发change()。
$(document).ready(function(){
$("#val").keydown(function(e){
if(e.which == 9) {
e.preventDefault();
$("p").html("focus event triggered");
}
});
$("#btn1").click(function(){
$("#val").focus();
$("p").html("focus event triggered");
});
$("#btn2").click(function(){
$("input").blur();
$("p").html("blur event triggered");
});
});
我在下面添加了jsfiddle链接:Keydown Example
答案 1 :(得分:0)
如果我理解你的问题是正确的,你只需要将更改功能更改为javascript函数中的模糊功能。 这将触发对输入元素的关注。
$(document).ready(function(){
$("#val").on('blur', function(e){
$("input").focus();
$("p").html("focus event triggered");
});
$("#btn1").click(function(){
$("input").focus();
$("p").html("focus event triggered");
});
$("#btn2").click(function(){
$("input").blur();
$("p").html("blur event triggered");
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
Enter your name: <input id="val" type="text">
<br><br>
<button id="btn1">Trigger focus event</button>
<button id="btn2">Trigger blur event</button>
<p style="color:red"></p>
</body>
</html>
答案 2 :(得分:0)
$(document).ready(function(){
$("#val").on('input', function(){
$("input").focus();
$("p").html("focus event triggered");
});
$("#btn1").click(function(){
$("input").focus();
$("p").html("focus event triggered");
});
$("#btn2").click(function(){
$("input").blur();
$("p").html("blur event triggered");
});
});
我认为您尝试做的是在输入值更改时触发更改事件