HTML Button deaktivieren

... komplette Frage anzeigen

2 Antworten

Da du den Button nach dem Klick für alle User sperren möchtest, musst du einen serverseitigen Vermerk vornehmen. In meinem Beispiel nutze ich dafür eine Datei. Wenn die Datei "button.txt", die mittels PHP erstellt wird, vorhanden ist, dann ist der Button gesperrt.

index.html

<html>
<head>
    <title>myButton</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
</head>
<body>
    <input type="button" name="klickmich" value="Klickmich" id="btn_klickmich" onclick="myButton.disable();" />
    <input type="button" name="enable" value="Button wieder entsperren" id="btn_enable" onclick="myButton.enableForAllUsers();" />
    <script>
    var myButton = {
        check: function() {
            //SPERRT DEN BUTTON, WENN DIE MERKER-DATEI EXISTIERT
             $.ajax({
                  url: 'button.txt',
                  success: function() {
                    document.getElementById('btn_klickmich').disabled=true;
                  }
            }); 
        },
        disable: function() {
            myButton.disableForAllUsers(); //RUFT DIE DisableForAllUsers-METHODE AUF
            document.getElementById('btn_klickmich').disabled=true; //SETZT DEN BUTTON AUF DISABLED 
        },
        disableForAllUsers: function() {
            //Ruft per AJAX ein PHP-Skript auf, das eine "Merker"-Datei erzeugt. 
            $.ajax({
                  url: 'file.php',
                  dataType: "json",
                  type: "POST",
                  data: { "action" : "disable" },
                  success: function(data) {
                    alert(data.message);
                  }
            }); 
        },
        enableForAllUsers: function() {
            //Ruft per AJAX ein PHP-Skript auf, die die Merker-Datei löscht
            if(document.getElementById('btn_klickmich').disabled === true) {
              $.ajax({
                    url: 'file.php',
                    dataType: "json",
                    type: "POST",
                    data: { "action" : "enable" },
                    success: function(data) {
                      alert(data.message);
                      window.location.reload();
                    }
              }); 
            }else{
              alert("Der Button ist nicht gesperrt!");
          }
        }
    }
    myButton.check(); //RUFT BEIM LADEN DER SEITE DIE check-METHODE AUF
    </script>
</body>
</html>

file.php

<?php
    if($_POST['action'] == "disable") {
        $datei = fopen("button.txt","w+");
        fwrite($datei, "disabled");
        flose($datei);
    }else{
        @unlink("button.txt");
        echo json_encode( $array = array("message"=>"Button ist wieder freigegeben.") );
    }
?>
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ConQuererShows
07.11.2012, 14:59

Habs eben getestet aber leider geht das bei mir nicht... Seit ich was an den Permalinks geändert habe geht kein PHP mehr

wenn ich den button klicke und dann die Seite Aktualisiere ist er trotzdem nicht gesperrt... bleibt nur temporär gesperrt

0

Dann kannst du einen Cookie nutzen, den du abfragst, wenn die Seite geladen wird. Damit du auch direkt ordentlich und sauber programmierst, habe ich das ganze in ein Objekt mit verschiedenen Methoden gepackt. Es gibt die Methoden check, disable und setCookie. Die einzelnen Aufgaben der Methoden habe ich in die Kommentare geschrieben.

<html>
<head>
    <title>myButton</title>
</head>
<body>
    <input type="button" name="klickmich" value="Klickmich" id="btn_klickmich" onclick="myButton.disable();" />

    <script>
    var myButton = {
        check: function() {
            if(document.cookie) { 
                document.getElementById('btn_klickmich').disabled=true; //SPERRT DEN BUTTON EIN WENN EIN COOKIE GESETZT WURDE
            }
        },
        disable: function() {
            myButton.setCookie(); //RUFT DIE setCookie-METHODE AUF
            document.getElementById('btn_klickmich').disabled=true; //SETZT DEN BUTTON AUF DISABLED 
        },
        setCookie: function() {
            document.cookie = "disabled=true"; //SETZT EIN COOKIE
        }
    }
    myButton.check(); //RUFT BEIM LADEN DER SEITE DIE check-METHODE AUF
    </script>
</body>
</html>
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Unsinkable2
06.11.2012, 11:45

Auf die Antwort von MatthiasEger hat ConQuererShows noch eine Verschärfung des Schwierigkeitsgrades eingefügt:

ich bräuchte es so das der button wenn er gedrückt wird ne email an mich sendet und für alle deaktiviert ist

Damit fallen Cookies weg...

0

Was möchtest Du wissen?