Javascript 使用JQuery在ESC按键处关闭自定义框
我有以下对话框的HTML代码:Javascript 使用JQuery在ESC按键处关闭自定义框,javascript,jquery,Javascript,Jquery,我有以下对话框的HTML代码: <div id="modal-dialog" class="no-display"> <div class="form"> <div class="close"> </div> <div align="center"> <h2><u>form</u>
<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>
我写道:
$("#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键时关闭“模式”对话框
我的JS代码中有错误吗
谢谢这个怎么样:
$("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()
}
这个怎么样:
$("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()
}
如果$modal dialog没有焦点,绑定到$modal dialog将不会捕获正在按下的ESC按钮
最好将keyup绑定到整个文档,这样无论页面上的哪个位置有焦点,它都会引发keypress事件。如果$modal dialog没有焦点,绑定到$modal dialog将不会捕获正在按下的ESC按钮
最好将keyup绑定到整个文档,这样无论页面上的焦点在哪里,它都会引发keypress事件。。自从jQuery 1.7以来,live已被弃用。尝试使用.on代替
它的工作原理是一样的。请参阅。.live自jQuery 1.7以来已被弃用。尝试使用.on代替
它的工作原理是一样的。请参阅。您使用的是哪个版本的jQuery?只是好奇,在比较键代码时使用===或==是否有区别?@Niklas两者都是正确的,但实际上使用===更好。它更严格,不执行类型强制。阅读有关Javascript Garden的更多信息:您使用的是哪个版本的jQuery?只是好奇,在比较关键代码时使用===或==有什么区别吗?@Niklas两者都是正确的,但实际上最好使用===。它更严格,不执行类型强制。阅读有关Javascript Garden的更多信息:$html我错过了它:。我的错。谢谢$html我错过了:。我的错。谢谢你,我会用上而不是活的。Thx for Advice我将在上使用而不是live。谢谢你的提醒!如果你不知道焦点的要求,那么调试它是非常困难的。谢谢你的提醒!如果您不知道焦点需求,那么调试它就非常困难。