Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按键时使用jQuery取消聚焦文本框_Javascript_Jquery - Fatal编程技术网

Javascript 按键时使用jQuery取消聚焦文本框

Javascript 按键时使用jQuery取消聚焦文本框,javascript,jquery,Javascript,Jquery,我有一个文本框,当您在文本框外单击时,它会显示警报。如果用户按Enter键,我也会尝试显示警报。以下是我所拥有的: <input id="txtInput" type="text" onblur="alert('Hello');" /> <script type="text/javascript"> $(document).ready(function () { $("#txtInput").keyup(function (event) {

我有一个文本框,当您在文本框外单击时,它会显示警报。如果用户按Enter键,我也会尝试显示警报。以下是我所拥有的:

<input id="txtInput" type="text" onblur="alert('Hello');" />

<script type="text/javascript">
    $(document).ready(function () {
    $("#txtInput").keyup(function (event) {
        if (event.keyCode == 13) {
            $(this).blur();
            return false;
        }
    });
});

$(文档).ready(函数(){
$(“#txtInput”).keyup(函数(事件){
如果(event.keyCode==13){
$(this.blur();
返回false;
}
});
});
如果我在文本框内单击,然后在文本框外单击,则警报将正确显示

但是如果我在文本框内并按Enter键,它会显示警报-当我解除警报时,会显示另一个警报(我假设是因为文本框上正在调用onblur)


为什么不调用
$(this).blur()
从文本框中移除焦点?或者有更好的方法吗?

我不能告诉您为什么这样做,但是如果您从HTML中删除
onblur
事件并将其放入js中,它就会起作用


[编辑]清理代码以使用链接,而不是使用选择器两次。

下面是一个示例。在OSX上的Chrome中,它可以正常工作。我没有遇到你提到的问题。你在测试什么浏览器和jquery的哪个版本??您的代码在chrome/jquery 1.9.1Chrome version 25和jquery 1.8.3上运行良好。那么,在1.8.3中,我看到了这种行为。请参阅下面的答案。
$("#txtInput").keyup(function (event) {
    if (event.keyCode == 13) {
        $(this).blur();
        return false;
    }
}).blur(function(){
     alert('Hello');
});