ux

2015-01-23 4 views
-3

에 대한 몇 초 동안 키 업 무시 jquery 유효성 검사기 플러그인을 사용하여 여러 단계로 된 양식이 있는데, Enter 키를 누르면 다음 페이지로 이동합니다.ux

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); 
    }}}); 

문제는 사용자가 입력 버튼을 사용하는 경우 버튼을 계속 누르고있는하고 다음 페이지로 이동하려고하기 때문에, 그것은 다음 페이지에 유효성 검사 오류를 유발한다는 것이다.

Enter 키를 놓으면 다음 페이지 이후에 페이지로 이동하지 않고 다음 페이지로 이동하도록 작은 키를 입력 키를 어떻게 무시합니까?

+1

질문 문구가 매우 모호합니다. 조금 더 간단한 방법으로 설명하십시오. – gahse

답변

2

Enter 키에 대한 새로운 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; 
}); 
+0

추가 된 'e.preventDefault();'와 함께 작동합니다. 필요한 곳 – Alice

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); 
    } 
} 
+0

이상하게도, 이것을 시도하면 처음 페이지에서 게시됩니다. – Alice