2013-07-08 2 views
0

잘못된 데이터를 입력하면 오류 창이 팝업되는 onblur 이벤트가 있습니다. 문제는 웹 페이지를 닫거나 다른 창을 클릭하면 onblur 이벤트가 활성화되고 팝업이 다시 나타납니다. 누구나 문제를 해결할 수있는 방법이 있습니까? 당신은 당신이 onsubmit 활용할 수있는 형태를 사용하는 경우Onblur 함수가 계속 실행 중입니다.

여기에 코드

<input id="M3_pos_tab" type="text" maxlength="5" name="Blank" size="5" onblur="CheckFS();"/> 

<script type="text/javascript"> 
function CheckFS() 
{ 
    var FS_pos = parseFloat(FS_tab.value); 
    if ((FS_pos == 0) || (FS_pos == parseFloat(L_tab.value)) || (isNaN(FS_pos))) { 
    } else { 
     window.alert("Error"); 
     FS_tab.select(); 
     FS_tab.focus(); 
     return;  
    } 
} 

+0

이 FS_tab 무엇이며 어떤 역할을합니까 : 일종의 해키 솔루션은, 그러나 그것은 당신을 위해 일 수 있는가? – donnywals

+0

@donnywals : 제 생각 엔이 함수를 호출하는 입력 요소입니다. 그러나 할당이 어디에서 발생하는지 전혀 알지 못합니다. – Travesty3

답변

0

의 단순화 된 버전입니다.

<form action="onsubmit.htm" onsubmit="return CheckInput();"> 
<!-- input --> 
<input type="submit" value="send"> 
</form> 

<script type="text/javascript"> 
function CheckInput() { 
// things you want to check 
</script> 

는 양식 sumbitted되지 않습니다 거짓을 반환하는 경우 CheckInput는(), 양식이 제출됩니다 사실을 반환합니다.

0

확실한 방법이 없지만 흐리게 표시되는 활성 요소를 확인할 수 있습니다. 적어도 Chrome에서는 다른 창이나 탭을 클릭해도 onblur 이벤트가 계속 발생하지만 활성 요소는 여전히 입력이며 다른 것은 아닙니다.

Sample fiddle

function CheckFS() { 
    if (document.activeElement == FS_tab) { 
     // if the input is still the active element, 
     // then we haven't focused anything else on the page, 
     // so we must have focused something else off of the page 
     return; 
    } 

    var FS_pos = parseFloat(FS_tab.value); 
    if ((FS_pos == 0) || (FS_pos == parseFloat(L_tab.value)) || (isNaN(FS_pos))) { 
    } else { 
     window.alert("Error"); 
     FS_tab.select(); 
     FS_tab.focus(); 
     return;  
    } 
} 
관련 문제