2013-07-08 2 views
0

У меня есть событие onblur, которое вызовет всплывающее окно ошибки, если вводятся неверные данные. Проблема в том, что когда я пытаюсь закрыть веб-страницу или щелкнуть любое другое окно, событие onblur активируется, и всплывающее окно снова появится ... У кого-нибудь есть идея, как это исправить?Функция 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

Если вы используете форму вы можете использовать onsubmit.

<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 по-прежнему будет срабатывать, когда вы нажмете на другое окно или вкладку, но активный элемент все равно будет входным, а не что-то еще на странице. Любопытное Hacky решение, но оно может работать для вас:

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;  
    } 
} 
Смежные вопросы