2013-07-08 86 views
0

我有一個onblur事件,如果輸入的數據不正確,將導致錯誤窗口彈出。問題是,當我嘗試關閉網頁或單擊任何其他窗口時,onblur事件將被激活,並且彈出窗口會再次出現......任何人都有想法如何解決這個問題?Onblur函數繼續運行

這裏是如果你使用,你可以利用的onsubmit表單代碼

<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> 

如果CheckInput()返回形式將被提交,如果返回形式不會sumbitted。

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