Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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

Předmět Autor Datum
Jde o celkem běžné chování a často jsem narazil na to, že se o řešení ani nepokoušejí, protože nemus… nový
Wikan 20.01.2026 22:45
Wikan
Udalost na zmenu obsahu (spolecna) vsech povinnych editacnich policej, jtera to odesilaci tlacitko p… poslední
Jan Fiala 21.01.2026 05:22
Jan Fiala

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.

Zpět do poradny Odpovědět na původní otázku Nahoru