Javascript: mehrere Textfelder prüfen ob es sich um eine Zahl handelt und diese zwischen 1 und 49 liegt

Nils...

Mitglied
Hallo Community,

für ein eine onlie Lotterie Website (Uni-Projekt) muss der Kunde seine Lottozahlen selbst eingeben (in ein Textfeld!! Das soll NICHT geändert werden! Kein Feld vom typ number oder ähnliches gewollt!!!) und ich will mittels javascript prüfen, ob in diesem Feld wirklich eine Zahl eingetragen wurde und ob diese wirklich zwischen 1 und 49 liegt.

Hier mein Code:
1606509867535.png
1606509927350.png
Das Script wollte ich um weitere else if Zweige mit den jeweiligen boxen erweitern, aber leider klappt es schon bei box1 nicht...


Wer kann helfen?

Grüße
Nils
 
Verwende bitte Code-Tags (in der Toolbar des Editors die erste Schaltfläche) und keine Screenshots.

Du könntest z. B. input type="number" verwenden, um schon einmal nur Zahlen zuzulassen.
 
Also generell: JavaScript ist nicht Java. Das sollte man als erstes lernen / wissen.

Dann sollte man sich etwas mit Datentypen beschäftigen. Text sind Strings ... und die kann man nicht so einfach mit Zahlen vergleichen. Wenn ein String eine Zahl beinhaltet, dann kann man den String parsen. Dann müsste man noch wissen, in was für einen Datentyp man den haben will und schon kann man da mit google suchen ...

JavaScript String parse int würde ich dann als Suchbegriffe vorschlagen - dann solltest Du finden, was du suchst.

Verwende bitte Code-Tags (in der Toolbar des Editors die erste Schaltfläche) und keine Screenshots.

Du könntest z. B. input type="number" verwenden, um schon einmal nur Zahlen zuzulassen.
Das hat er ja explizit ausgeschlossen. Aber parseint kann ja einen String parsen, so isnan false lieferte ....
 
Das wäre auch nur der erste Schritt gewesen 🙂
Na. Anstatt einen Validator in irgendeiner Weise hinzuschustern, kann man auch einfach alle Zeichen wieder entfernen, die keine Zahlen sind. Sinngemäß

HTML:
<input oninput="event.target.value = event.target.value.replace(/\D/g, '')"/>

Halte ich für die bessere Variante
 
Ich bin jetzt doch auf type number umgestiegen und habe jetzt das Problem, dass ich prüfen möchte, dass es acuh wirklich 6 UNTERSCHIEDLICH zahlen sind:
HTML:
    <script>
        function check() {
            var a = document.getElementById("box1");
            var b = document.getElementById("box2");
            var c = document.getElementById("box3");
            var d = document.getElementById("box4");
            var e = document.getElementById("box5");
            var f = document.getElementById("box6");

             if(a != b != c != d != e != f){return true; alert("Ihr Tippschein wurde gespeichert!");}
             else if {return false; alert("Sie müssen 6 unterschiedliche Zahlen wählen");}

    </script>

</head>
    <body>
    <h1>6 aus 49</h1>
    <br>
    <form name="lottozahlen" th:action="@{/tippscheinspeichern}" th:object="${tippscheinform}" method="POST">
        <table id="sechsaus49">
            <caption>6 aus 49</caption>
            <tbody>
            <tr>
                <td><input type="number" id="box1" th:field="*{firstNumber}" name="box1" min="1" max="49" required></td>
                <td><input type="number" id="box2" th:field="*{secondNumber}" name="box2" min="1" max="49" required></td>
                <td><input type="number" id="box3" th:field="*{thirdNumber}" name="box3" min="1" max="49" required></td>
                <td><input type="number" id="box4" th:field="*{fourthNumber}" name="box4" min="1" max="49" required></td>
                <td><input type="number" id="box5" th:field="*{fifthNumber}" name="box5" min="1" max="49" required></td>
                <td><input type="number" id="box6" th:field="*{sixthNumber}" name="box6" min="1" max="49" required></td>

            </tr>
            </tbody>
        </table>
        <button type="submit" value="Tippschein speichern" onclick="check()">Tippschein speichern</button>
    </form>

Leider greift die Funktion nicht......
Dass mit dem replacen werde ich noch einbauen 🙂

Kann mir wer sagen was falsch ist?
 
Deine Bedingung ist falsch: a != b != c != d != e != f

Einfach mal bis auf eine nur gleiche Zahlen eingesetzt und schrittweise ausgewertet:

Code:
2 != 1 != 1 != 1 != 1 != 1
  true != 1 != 1 != 1 != 1
      false != 1 != 1 != 1
            true != 1 != 1
                false != 1
                      true
 

Neue Themen


Zurück
Oben