窗口加载时,setInterval在Chrome和Firefox中不起作用

时间:2015-04-07 11:01:14

标签: javascript jquery css google-chrome

当我第一次访问登录页面时,我的setInterval功能似乎无法在Chrome和FF中运行,但在IE中正常运行。

我想检测用户是否已请求将其登录数据保存为登录表单的一部分。如果已保存,则登录按钮应为绿色。目前,它没有检测到表单已记住凭据并且按钮显示为灰色:

$(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);
    }
}

1 个答案:

答案 0 :(得分: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);
    }
}

您可以使用setIntervalkeypress事件代替input,并检查它们是否已填充。