为 ux 忽略 keyup 几秒钟
Ignore keyup for a few seconds for ux
我有一个使用 jquery 验证器插件的多步表单,当您按 enter 时它也会转到下一页。
function showPage(pg){
$('formError').empty();
$('table:visible').hide();
$('#page-' + pg).show();
$('input[type="text"]:visible').focus();
}
$(document).keydown(function(e) {
if(e.which == 13) {
if($('#msform :input:visible').valid()){
page++;
showPage(page);
}}});
问题是,如果您使用回车按钮,它会在下一页触发验证错误,因为该按钮仍在按下,它会尝试转到下一页。
如何在短时间内忽略回车键,以便释放回车键进入下一页,而不是尝试进入下一页之后的页面?
您可以像这样使用 setTimeout() 函数
$(document).keydown(function(e) {
setTimeout(myFunction(),500);
});
function myFunction(){
if(e.which == 13) {
if($('#msform :input:visible').valid()){
page++;
showPage(page);
}}
}
::::::::::::::::::更新::::::::::::::::::
$(document).keydown(function(e) {
if(e.which == 13) {
setTimeout(myFunction(),500);
}
});
function myFunction(){
if($('#msform :input:visible').valid()){
page++;
showPage(page);
}
}
您可以等待相应的 keyup 事件,然后再考虑 enter 键的新 keydown 事件。
pressed = {};
$(document).keydown(function(e){
if(pressed[e.which] == null && e.which == '13'){
if($('#msform :input:visible').valid()) {
page++;
showPage(page);
}
}
pressed[e.which] = true;
});
$(document).keyup(function(e) {
pressed[e.which] = null;
});
我有一个使用 jquery 验证器插件的多步表单,当您按 enter 时它也会转到下一页。
function showPage(pg){
$('formError').empty();
$('table:visible').hide();
$('#page-' + pg).show();
$('input[type="text"]:visible').focus();
}
$(document).keydown(function(e) {
if(e.which == 13) {
if($('#msform :input:visible').valid()){
page++;
showPage(page);
}}});
问题是,如果您使用回车按钮,它会在下一页触发验证错误,因为该按钮仍在按下,它会尝试转到下一页。
如何在短时间内忽略回车键,以便释放回车键进入下一页,而不是尝试进入下一页之后的页面?
您可以像这样使用 setTimeout() 函数
$(document).keydown(function(e) {
setTimeout(myFunction(),500);
});
function myFunction(){
if(e.which == 13) {
if($('#msform :input:visible').valid()){
page++;
showPage(page);
}}
}
::::::::::::::::::更新::::::::::::::::::
$(document).keydown(function(e) {
if(e.which == 13) {
setTimeout(myFunction(),500);
}
});
function myFunction(){
if($('#msform :input:visible').valid()){
page++;
showPage(page);
}
}
您可以等待相应的 keyup 事件,然后再考虑 enter 键的新 keydown 事件。
pressed = {};
$(document).keydown(function(e){
if(pressed[e.which] == null && e.which == '13'){
if($('#msform :input:visible').valid()) {
page++;
showPage(page);
}
}
pressed[e.which] = true;
});
$(document).keyup(function(e) {
pressed[e.which] = null;
});