2015-04-07 75 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事件和检查,如果他们都充满与否。

相关问题