Programmieren – die besten Beiträge

Wie kann ich diesen HTML Vorgang stoppen?

Ich würde gerne einen HTML-Vorgang stoppen, wenn eine Voraussetzung in Java Skript nicht erfüllt ist:

Ich arbeite mit formsubmit.co und kann auf meiner Webseite nicht mit PHP arbeiten. Bis jetzt habe folgenden Code:

<form action="https://formsubmit.co/email@gutefrage.de" method="post" onsubmit="validateEmail()">
    <input type="hidden" name="_autoresponse" value=
    "Hallo, du hast diese Email bekommen. " />
    <input type="hidden" name="_next" value="https://www.gutefrage.net/" /> 
    <input type="email" id="email" name="email" placeholder="Email Address" /> 
    <label class="container"><input type="checkbox" required/>Ich habe die Nutzungsbedinungen gelesen.</label> 
    <button type="submit">Send</button>
</form>


<script>
/* <![CDATA[ */
      function validateEmail() {
        const email = document.getElementById("email").value;
        if (email.includes("200") && email.includes("Frage") && email.length >= 20) {
          alert("Valid email address.");
          return true;
        } else {
          alert("Invalid email address.");
          return false;
        }
      }
/*]]>*/
</script>

Das Skript überprüft die Eingabe der E-Mail Adresse, sofern alle Felder eingegeben sind und das Formular abgesendet wurde, ob die eingegebene E-Mail-Adresse "100", "Frage" und grösser oder gleich 20 Zeichen lang ist. Auf einer Nachricht im Browser wird angezeigt, ob die E-Mail-Adresse den Voraussetzungen entspricht oder nicht. Anschließend wird die Nachricht "Hallo, du hast diese E-Mail bekommen." an die eingegebene E-Mail-Adresse gesendet (das übernimmt formsubmit.co). Anschließend wird der Nutzer auf Gute Frage weitergeleitet.

Beides Funktioniert einwandfrei, jedoch wird, egal ob die E-Mail die Voraussetzungen erfüllt oder nicht, an die angegebene E-Mail gesendet.

Meine Frage ist, ob ich die Aktion in HTML irgendwie stoppen kann, also das die E-Mail nicht versendet wird, wenn sie die Voraussetzungen in JavaScript nicht erfüllt. Dabei kann ich keine riesigen Änderungen am gegebenen HTML-Code von formsubmit unternehmen (da dies ja immer noch funktionieren sollte) und ohne PHP oder ähnliches.

Edit: Das mit der Erkennung funktioniert irgendwie auch nicht, es zeigt immer an, dass die Email die Voraussetzungen nicht erfüllt. Ich habe jedoch ein Beispiel, wo dies funktioniert:

<form onsubmit="return validateEmail()" method="post">
    <label for="email">Email:</label> <input type="email" id="email" name="email" placeholder="z.B. ichbincool@email.com" size="40" required="" /> <input type="submit" value="senden" required="" />
</form>
<script>
/* <![CDATA[ */
      function validateEmail() {
        const email = document.getElementById("email").value;
        if (email.includes("ich") && email.includes("cool") && email.length >= 5) {
          alert("Valid email address.");
          return true;
        } else {
          alert("Invalid email address.");
          return false;
        }
      }
/*]]>*/
</script>   
HTML, Webseite, programmieren, JavaScript, Programmiersprache, Webentwicklung, Webseitenoptimierung

Java-Code? Array?

Wie wird das Array verwendet? Was befindet sich in dem Array? kann jemand mir den Code und die Methode dunkler erklären?

* SWBild ist eine Klasse, die Graustufenbilder repraesentiert und
 * manipuliert. Die Implementierung erfolgt durch ein einfaches
 * Bildformat: Die Bildpunkte werden in einem zweidimensionalen
 * Array von 'short'-Werten gehalten. Jeder Feldeintrag kann einen
 * Wert zwischen 0 und 255 annehmen. Andere Werte sind unzulaessig.
 * Der Wertebereich [0..255] repraesentiert den Graustufenbereich:
 * 0 fuer Schwarz, 255 fuer Weiss und dazwischenliegende Werte fuer
 * die Grauabstufungen.
 * 
 * Beispielmethode 'dunkler': Ein geladenes Bild kann um
 * ein gegebenes 'delta' abgedunkelt werden.
class SWBild
{


    // die Bilddaten dieses Bildes
    private short[][] _bilddaten;


    // die Breite dieses Bildes
    private int _breite;


    // die Hoehe dieses Bildes
    private int _hoehe;


    // Leinwand zur Anzeige
    private Leinwand _leinwand;


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Benutzer kann interaktiv mit
     * Hilfe eines Dateidialogs die zu ladende Datei auswaehlen.
     */
    public SWBild()
    {
        _bilddaten = BildEinleser.liesBilddaten();
        if (_bilddaten != null)
        {
            aktualisiereBildgroesse(_bilddaten);
            erzeugeLeinwand();
        }
    }


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Dateiname kann als absoluter
     * oder relativer Pfad uebergeben werden.
     * 
     * @param bilddateiName
     *            der Name der Bilddatei
     */
    public SWBild(String bilddateiName)
    {
        _bilddaten = BildEinleser.liesBilddaten(bilddateiName);
        aktualisiereBildgroesse(_bilddaten);
        erzeugeLeinwand();
    }


    /**
     * Dieses Bild um einen Wert abdunkeln. 
     * 
     * @param delta
     *            Wert der Abdunkelung. Es wird mit dem Betrag von delta gerechnet, 
     *            deshalb darf der Parameter sowohl positiv als auch negativ sein.  
     */
    public void dunkler(int delta)
    {
        if (delta < 0)
        {
            delta = -delta;
        }


        /**
         * Durch alle Bytes des Bildes gehen und jeden Wert dekrementieren
         */
        for (int y = 0; y < _hoehe; y++)
        {
            for (int x = 0; x < _breite; x++)
            {
                if ((_bilddaten[y][x] - delta) > 0) // Wert darf 0 nicht unterschreiten
                {
                    _bilddaten[y][x] = (short) (_bilddaten[y][x] - delta);
                }
                else
                {
                    _bilddaten[y][x] = 0;
                }
            }
        }
        // Neuzeichnen der Bildleinwand, basierend auf den Werten in _bilddaten:
        zeichneBild();
    }




Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik

Wie starte ich die While Schleife in Python neu?

Hallo!

Ich programmiere aktuell einen "Vokabelabfrager". Dazu hätte ich eine Frage. Und zwar arbeite ich grafisch mit Tkinter. Doch ich bin gerade in einer While Schleife, in der alles funktioniert, aber dann will die While Schleife sich nicht mehr neustarten, denn sie hat schon erledigt was sie machen sollte, und will nicht weiter abfragen, weil sie dies schon gemacht hat.

Das ist ein Ausschit meines Codes:

weiter = False


def Prüfungs_Start():
    global weiter
    weiter = True
    while weiter == True:
        weiter = False
        Prüfungs_Start_Fenster = Tk()
        Prüfungs_Start_Fenster.title("Prüfung")
        Prüfungs_Start_Fenster.geometry("400x500")
        #Random Zeile finden
        Datei = open("Vokabeln.txt", "a")
        Datei = open("Vokabeln.txt", "r")
        Datei_Anzahl_Zeilen = 0
        for Zeile in Datei:
            Datei_Anzahl_Zeilen += 1
        Datei.seek(0)
        Randomzeile = randint(1, Datei_Anzahl_Zeilen)
        Zähler = 1
        for Zeilen_Inhalt in Datei:
            if Zähler == Randomzeile:
                Random_Zeilen_Inhalt = Zeilen_Inhalt
            Zähler += 1
        #2 Vokabeln, die in der ausgewählten Zeile stehen, in 2 Variablen speichern
        Ort = Random_Zeilen_Inhalt.find("'")
        TestVokabel1 = Random_Zeilen_Inhalt[0:Ort]
        TestVokabel2 = Random_Zeilen_Inhalt[Ort+1:-1]
        Label(Prüfungs_Start_Fenster, text = f"Ausgangs-Vokabel: {TestVokabel1}", font = "Arial_Black 20").place(x = 10, y = 10)
        Eingegebenes_Ergebnis = Entry(Prüfungs_Start_Fenster)
        Eingegebenes_Ergebnis.place(x = 10, y = 50)
        def Prüfung():
            if Eingegebenes_Ergebnis.get() == TestVokabel2:
                Label(Prüfungs_Start_Fenster, text = "Richtig!         ", font = "Arial 21", fg = "green").place(x = 10, y = 180)
            else:
                Label(Prüfungs_Start_Fenster, text = "Leider falsch", font = "Arial 21", fg = "red").place(x = 10, y = 180)


        Button(Prüfungs_Start_Fenster, text = "Fertig", command = Prüfung).place(x = 10, y = 100)
        def Weiter():
            global weiter
            weiter = True
            Prüfungs_Start_Fenster.destroy()
        Button(Prüfungs_Start_Fenster, text = "Weiter", command = Weiter).place(x = 10, y = 130)

Nun habe ich hinten diesen "Weiter" Button, der die Variable "weiter" wieder auf einen anderen Wert weisen soll, um die While Schleife wieder laufen zu lassen. Das möchte sie aber wohl nicht, denn sie hat ja schon abgefragt und da hat es nicht gestimmt.

Wenn ihr wisst, wie ich es schaffen kann, dass die While Schleife neu abfragt, bitte hilft mir,

euer Alex

programmieren, Programmiersprache, Python, Tkinter

Meistgelesene Beiträge zum Thema Programmieren