当我第一次访问登录页面时,我的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);
}
}
答案 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);
}
}
您可以使用setInterval
或keypress
事件代替input
,并检查它们是否已填充。