首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JQuery在按ESC键时关闭自定义框

使用JQuery在按ESC键时关闭自定义框
EN

Stack Overflow用户
提问于 2012-01-27 16:52:05
回答 3查看 3.6K关注 0票数 1

我有以下对话框的HTML代码:

代码语言:javascript
复制
<div id="modal-dialog" class="no-display">
        <div class="form">
            <div class="close">

            </div>
            <div align="center">
                <h2><u>form</u></h2>
            </div>          
            <form>
                <label for="yourname">Full name:</label><input type="text" name="yourname">
                <label for="email">E-mail:</label><input type="text" name="email">
                <label for="message">Message:</label></textarea><textarea type="text" name="message"></textarea><br/>
                <div class="clear"></div>
                <p align="center"><button>Send feedback</button></p>
            </form>
        </div>
    </div>

javascript:

代码语言:javascript
复制
$("#clickfeed").live("click", function() {
        $("#modal-dialog").removeClass("no-display");
    });

我写道:

代码语言:javascript
复制
$("#modal-dialog").live("keyup", function(e) {
        if(e.keyCode === 27 && !($(this).hasClass("no-display")))
        {
            $("#feedback-modal-dialog input").each(function() {
                $(this).attr("value","");
            });
            $("#feedback-modal-dialog textarea").each(function() {
                $(this).val("");
            });
            $("#modal-dialog").addClass("no-display"); //or .hide()
        }       
    });

只有当输入被聚焦时,ESC键才起作用,否则就不起作用。

我想在按下ESC时关闭modal-dialog框。

是我的JS代码中的错误吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-27 16:56:00

这样如何:

代码语言:javascript
复制
$("html").live("keyup", function(e) {

if(e.keyCode === 27 && !($('#modal-dialog').hasClass("no-display")))

    escape_check();

}

}

function escape_check() {

$("#modal-dialog").removeClass("no-display");

$("#feedback-modal-dialog input").each(function() {
    $('#modal-dialog').attr("value","");
});
$("#feedback-modal-dialog textarea").each(function() {
    $('#modal-dialog').val("");
});
$("#modal-dialog").addClass("no-display"); //or .hide()


}
票数 1
EN

Stack Overflow用户

发布于 2012-01-27 16:58:58

如果$("#modal-dialog"没有焦点,绑定到$("#modal-dialog")将不会捕获被按下的ESC按钮。

最好将keyup绑定到整个文档,这样无论页面上的焦点在哪里,它都会引发keypress事件。

票数 2
EN

Stack Overflow用户

发布于 2012-01-27 17:02:28

从jQuery 1.7开始,.live()就被弃用了。请尝试使用.on()

它的作用是一样的。请参阅documentation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9030850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档