Jquery Focus不支持输入

时间:2017-06-13 12:16:40

标签: javascript java jquery html twitter-bootstrap

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/

3 个答案:

答案 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");
    }); 
});

我认为您尝试做的是在输入值更改时触发更改事件