2015-04-07 109 views
0

我的setInterval函數在Chrome和FF中似乎不起作用,但在IE中工作時,我首先進入登錄頁面。當窗口加載時,setInterval在Chrome和Firefox中不起作用

我想檢測用戶是否要求將他們的登錄數據保存爲登錄表單的一部分。如果已保存,則登錄按鈕應爲綠色。目前,它沒有檢測到形式已經記住了證書和按鈕是灰色的:

$(window).load(function() { 
    setTimeout(function() { 
     $(".busy-dialog").fadeOut(500); 
    }, 1000); 
    var evt = document.createEvent("Events"); 
    evt.initEvent("click", true, true); 
    window.dispatchEvent(evt); 
    setInterval(function() {checkLogin();}, 200); 
}); 

checkLogin功能很簡單:

function checkLogin() { 
    var email = $("#username").val(); 
    var password = $("#password").val(); 
    if (email != '' && email != undefined && password != '' && password != undefined) { 
     $("#loginform .button.primary").attr('disabled', false); 
     $("#loginForm .button.primary").prop('disabled', false); 
    } else { 
     $("#loginForm .button.primary").attr('disabled', true); 
     $("#loginForm .button.primary").prop('disabled', true); 
    } 
} 
+0

請參閱[「應該在其標題中包含」標籤?「](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles),其中共識是「不,他們不應該」! –

回答

0

我會建議你避免使用setInterval這個用例。

即使您打算使用它,您必須在表單驗證後清除它。增加定時器間隔。 200ms太短,你觸發功能很多次。

var timer = setInterval(checkLogin, 500); 

在您的checkLogin()函數中。

function checkLogin() { 
    var email = $("#username").val(); 
    var password = $("#password").val(); 
    if (!!email && !!password) { 
     $("#loginform .button.primary").attr('disabled', false); 
     clearInterval(timer); 
    } else { 
     $("#loginForm .button.primary").attr('disabled', true); 
    } 
} 

相反的setInterval,您可以使用keypressinput事件和檢查,如果他們都充滿與否。

相關問題