当我第一次进入登录页面时,我的 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);
}
}
最佳答案
我建议您避免在这个用例中使用 setInterval
。
即使您打算使用它,也必须在验证表单后清除它。同时增加计时器间隔。 200 毫秒太短了,而且您要多次触发该功能。
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);
}
}
您可以使用keypress
或input
事件来检查它们是否已填充,而不是setInterval
。
关于javascript - 加载窗口时 setInterval 在 Chrome 和 Firefox 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29489988/