我正在尝试创建一个非常简单的模式对话框,它只显示一个文本区域。
目标:
- 如果用户点击“esc”键,它将消失(文本输入被忽略)
- 如果用户输入文本并按下“回车”键,则运行接受输入的函数(称为“postText(userinput)”)
我想知道是否可以使用 jQuery BlockUI:http ://malsup.com/jquery/block/#demos 。
但是,我不确定如何实际关闭基于 esc 的对话框,或者如果用户按 Enter 键则运行函数。
任何帮助将非常感激!
我正在尝试创建一个非常简单的模式对话框,它只显示一个文本区域。
目标:
我想知道是否可以使用 jQuery BlockUI:http ://malsup.com/jquery/block/#demos 。
但是,我不确定如何实际关闭基于 esc 的对话框,或者如果用户按 Enter 键则运行函数。
任何帮助将非常感激!
关闭对话框ESC
,只需添加一个keyup
侦听器document
并$.unblockUI
在键码等于时调用27
。
$(document).on('keyup', function(e) {
if (e.which === 27) { // Escape key
$.unblockUI();
}
});
对于表单,只需在对话框的输入字段中添加一个事件侦听器。基本上是一样的。
$('#the-input').on('keyup', function(e) {
if (e.which === 13) { // Enter key
// AJAX maybe?
$.post('your/url', { data: $(this).val() }, function(response) {
$.unblockUI();
});
}
});
编辑
在加载 DOM 后分配这些侦听器。因此,您加载的脚本文件将包含:
$(document).ready(function() {
// Code from the two listings above here
// Trigger blockUI by click on an link for example
$('a').on('click', function(e) {
e.preventDefault();
$.blockUI({ message: $('#your-form') });
});
});
尝试这样的事情;
$('#txtValue').keyup(function(e) {
e.preventDefault();
if (e.keyCode === 13) {
// The Enter key was pressed
postText($(this).val());
}
});
您应该如何使用form.submit
事件而不是监听enter
密钥。
if (e.keyCode === 27) {
// The Esc key was pressed
$('#dialog').hide();
}
另请参阅这些以获取更多信息;
javascript:
("#yourInput").keyup(function(e){
switch (e.keyCode) {
case 13: # enter
# logic
case 27: # esc
# logic
}
})