
Jak zavolat funkci po vyplnění přihlašovacích údajů prohlížečem?
Dobrý den,
Nastavil jsem na webu, aby tlačítko pro přihlášení zůstalo zakázáno do té doby, než nejsou vyplněny oba údaje a email má platný formát
function updateLoginButtonState() {
const email = usernameInput.value.trim();
const password = passwordInput.value.trim();
const hasEmail = email.length > 0;
const hasPassword = password.length > 0;
const emailValid = isEmailSyntaxValid(email);
loginBtn.disabled = !(hasEmail && hasPassword && emailValid);
// NEXT CODE
}Volám při jakékoliv změně hesla nebo emailu a funguje to naprosto správně
Problém nastává, když to má uložené prohlížeč a automaticky to doplní při načtení, při čemž tlačítko zůstane stále nepovoleno.
I když stačí pouze kliknout (klidně i přímo na tlačítko), tak se okamžitě povolí, i přesto je to otravné.
ChatGPT mně doporučil na konec DOMContentLoaded dopsat
let loginCheckCount = 0;
const loginPostLoadCheck = setInterval(() => {
updateLoginButtonState();
loginCheckCount++;
// max ~2 sekundy (20 × 100 ms)
if (loginCheckCount >= 20) {
clearInterval(loginPostLoadCheck);
}
}, 100);To sice funguje správně, pustí se to v daných intervalech v daném počtu, ale nepomůže to. I když jsou údaje vyplněné, tlačítko je stále deaktivované.
Nevíte, prosím Vás, jak to opravit?
Děkuji
Jde o celkem běžné chování a často jsem narazil na to, že se o řešení ani nepokoušejí, protože nemusí být stoprocentní.
Někde používají "hack", že si přidají event listener na "animationstart" a tam už ta hodnota může být dostupná. Ale je to bez záruky.
Udalost na zmenu obsahu (spolecna) vsech povinnych editacnich policej, jtera to odesilaci tlacitko povoli pri splneni.