1

我有一个文本框,当您在文本框外单击时会显示警报。如果用户按 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;
        }
    });
});

如果我在文本框内部单击然后在其外部单击,则警报会正确显示。

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

为什么不调用$(this).blur()从文本框中删除焦点?还是有更好的方法来做到这一点?

4

1 回答 1

2

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

http://jsfiddle.net/ERdaa/4/

$("#txtInput").keyup(function (event) {
    if (event.keyCode == 13) {
        $(this).blur();
        return false;
    }
}).blur(function(){
     alert('Hello');
});

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

于 2013-03-07T20:19:37.620 回答