我有一个使用jquery验证器插件的多步骤表单,当你按下回车键时它也会进入下一页。
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);
}}});
问题是,如果你使用回车按钮,它会在下一页触发验证错误,因为按钮仍然被按下并且它试图转到下一页。
如何在一小段时间内忽略输入键,以便释放回车键可以转到下一页而不会尝试转到下一页之后的页面?
答案 0 :(得分:2)
您可以在考虑输入密钥的新keydown事件之前等待相应的keyup事件。
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;
});
答案 1 :(得分:0)
您可以像这样使用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);
}
}