Home > Back-end >  Disable a button until the user clicks on a check box | JavaScript
Disable a button until the user clicks on a check box | JavaScript

Time:11-04

I'd love to achieve that the button below the User-Id is disabled until the user agrees with the rules for the game by clicking on a checkbox. I already have a code which was sent by a friend. But my problem is that it doesn't work on the actual page. I assume it doesn't because the JS-Script isn't connect correctly in the HTML script. How do I connect correctly the script?

Here’s the code of JavaScript:

function input(event) {
    const checked = document.getElementById("startgame").checked;
    const button = document.getElementById("startbutton");

    if (checked) {
        button.disabled = false;
        return;
        alert("Herzlichen Glückwunsch! Sie haben sich erfolgreich angemeldet. Das Spiel beginnt, sobald sie den Knopf betätigen.")
    } else

        button.disabled = true;
    alert("Es tut us leid. Jedoch müssen Sie zuerst unsere Regeln akzeptieren.")
}

Here’s my HTML script:

            <div class="quiz-menu" data-aos="fade-up" data-aos-duration="3000">
            <div class="rules">
                <h1 class="rules-title"><i class="fas fa-scroll"></i>&nbsp;RULES!</h1>
                <p class="rules-text">
                    <center>
                        <b>
                            Damit das Quiz Ihnen nicht zu einfach gemacht wird; gibt es ein paar Regeln. Lesen Sie diese bitte durch:
                        </b>
                    </center>
                </p>
                <p class="rules-list">
                    1. Hilfsmittel (wie z.B. Websiten) werden blockiert;
                    <br>
                    <br />
                    2. Sie haben <i>alle Zeit der Welt</i>. Überstressen Sie sich also nicht und denken sie mit Ruhe nach.
                    <br><br />
                    3. Seien Sie nicht enttäuscht, wenn sie fehler haben. Sie können diesen Test jeder Zeit wiederholen -
                    und sich verbessern.
                </p>
            </div>
            <div class="user-id">
                <div class="user-background" data-aos="flip-down" data-aos-duration="3000">
                    <h2 class="user-title">USER-ID</h2>
                    <p class="user-text">
                        Damit Sie unseren Highscore auch richtig nutzen können,
                        bitten wir sie, dass sie sich einen Usernamen ausdenken.
                    </p>
                    <form action="/action_page.php" class="quizform">
                        <label for="nname" class="formtext"><b>Nickname:</b></label><br>
                        <input type="text" id="fname" name="nname" value="Dein Username">
                        <br><br />
                        <input type="checkbox" id="startgame" name="startgame" value="startgame">
                        <label for="startgame"> Um das Spiel zu starten, muss du die Checkbox ankreuzen</label><br>
                        <br>
                    </form>
                </div>
            </div>
            <div>
                <a href="kategorieeins.html" class="quiz-button" id="startbutton"><span><i class="fas fa-play"></i>&nbsp;&nbsp;quiz starten</span></a>
            </div>
        </div>

CodePudding user response:

you have function input(event) then call it on checkbox change event like using below code snippet

 <input type="checkbox" id="startgame" name="startgame" value="startgame" onchange="input(this)">

you have to add button inside a tag so you can enable diable it on checkbox selection so I change your a tag with this

<a href="kategorieeins.html" class="quiz-button"><button id="startbutton" disabled><i class="fas fa-play"></i>&nbsp;&nbsp;quiz starten</button></a>

here is a working demo hope easy to understand.

    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
    function input(event) {
        const checked = document.getElementById("startgame").checked;
        const button = document.getElementById("startbutton");
        if (checked) {
            button.disabled = false; 
            return;
              alert("Herzlichen Glückwunsch! Sie haben sich erfolgreich angemeldet. Das Spiel beginnt, sobald sie den Knopf betätigen.")
        } else
            button.disabled = true;
        alert("Es tut us leid. Jedoch müssen Sie zuerst unsere Regeln akzeptieren.")
    }
    function showAlert()
    {
     alert("Herzlichen Glückwunsch! Sie haben sich erfolgreich angemeldet. Das Spiel beginnt, sobald sie den Knopf betätigen.")
    }
    </script>
    </head>
    <body>

    <div class="quiz-menu" data-aos="fade-up" data-aos-duration="3000">
                <div class="rules">
                    <h1 class="rules-title"><i class="fas fa-scroll"></i>&nbsp;RULES!</h1>
                    <p class="rules-text">
                        <center>
                            <b>
                                Damit das Quiz Ihnen nicht zu einfach gemacht wird; gibt es ein paar Regeln. Lesen Sie diese bitte durch:
                            </b>
                        </center>
                    </p>
                    <p class="rules-list">
                        1. Hilfsmittel (wie z.B. Websiten) werden blockiert;
                        <br>
                        <br />
                        2. Sie haben <i>alle Zeit der Welt</i>. Überstressen Sie sich also nicht und denken sie mit Ruhe nach.
                        <br><br />
                        3. Seien Sie nicht enttäuscht, wenn sie fehler haben. Sie können diesen Test jeder Zeit wiederholen -
                        und sich verbessern.
                    </p>
                </div>
                <div class="user-id">
                    <div class="user-background" data-aos="flip-down" data-aos-duration="3000">
                        <h2 class="user-title">USER-ID</h2>
                        <p class="user-text">
                            Damit Sie unseren Highscore auch richtig nutzen können,
                            bitten wir sie, dass sie sich einen Usernamen ausdenken.
                        </p>
                        <form action="/action_page.php" class="quizform">
                            <label for="nname" class="formtext"><b>Nickname:</b></label><br>
                            <input type="text" id="fname" name="nname" value="Dein Username">
                            <br><br />
                            <input type="checkbox" id="startgame" name="startgame" value="startgame" onchange="input(this)">
                            <label for="startgame"> Um das Spiel zu starten, muss du die Checkbox ankreuzen</label><br>
                            <br>
                        </form>
                    </div>
                </div>
                <div>
                    <a href="kategorieeins.html" class="quiz-button"><button onclick="showAlert()" id="startbutton" disabled><i class="fas fa-play"></i>&nbsp;&nbsp;quiz starten</button></a>
                </div>
            </div>

    </body>
    </html>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

  • Related