JavaScript Formular - Required nur bei bestimmten Inhalten?

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
Hallo zusammen,

ich habe bspw. das folgende Formular:

HTML:
<form>
    <select name="x" id="x" required>
        <option value="Grund A">Grund A</option>
        <option value="Grund C">Grund B</option>
        <option value="Grund B">Grund C</option>
        <option value="Anderer Grund">Anderer Grund</option>
    </select>
    <input type="text" name="freitext" id="freitext">
</form>

Im Dropdown muss auf Grund des required-Elements eine Auswahl getroffen werden.
Jetzt kommt mein Problem. Im Freitext-Feld nur zwingend notwendig, wenn im Dropdown
die Option 'Anderer Grund' ausgewählt wurde. Wie kann ich das am besten realisieren?

VG,
 
Hi,

indem du entweder vor dem abschicken an den Server das ganze validierst oder dem Server die Validierung überlässt und dann auf die Rückgabe reagierst

VG,
Mad
 
  • Gefällt mir
Reaktionen: Lawnmower und Toms
Javascript:
let value = document.getElementById("freitext").value;

if(value != ''){
    // Positive Validierung
}
else{
    // Negative Validierung
}
du kannst dir den Inhalt des Inputs per JS holen:
 
Hi!

Das, was ich mit dem required erreiche, lässt sich auf diese Art nicht realisieren?
Es reicht ja eine Meldung über JS - bitte das Feld ausfüllen. Ob man das durch die
bspw. Deaktivierung von Javascript umgehen könnte, spielt da keine Rolle.

VG,
 
Also wenn du Client-seitige Validierung willst (halte ich für sinnvoll), dann nimm auch idealerweise eine entsprechende Bibliothek zur Validierung.

Trotzdem ist eine zusätzliche Server-seitige Validierung Pflicht.
 
  • Gefällt mir
Reaktionen: C:\Defuse_Kit
Ich hab´s jetzt so versucht - funktioniert aber nicht. Geht das auf diese Weise nicht?

HTML:
<form>
    <select onchange="checkInputTxt(this)" name="x" id="x" required>
        <option value="Grund A">Grund A</option>
        <option value="Grund C">Grund B</option>
        <option value="Grund B">Grund C</option>
        <option value="Anderer Grund">Anderer Grund</option>
    </select>
    <input type="text" name="freitext" id="freitext">
</form>

Javascript:
var checkInputTxt = function(selectObject) {
    if (selectObject.value == 'Grund B')
    {
        document.getElementById("freitext").required;
    }
}

Das Freitext-Feld kann ich in dieser Konstel-
lation auch problemlos leer absenden.
 
tollertyp schrieb:
Trotzdem ist eine zusätzliche Server-seitige Validierung Pflicht.
This.

Dein ausgeliefertes HTML-Konstrukt kann ich mittels Developer-Konsole komplett aushebeln. Validierung im Client dient höchstens besserer UX, aber nirgends der Sicherheit. Das required-Attribut nutzt du ja bereits, mehr brauchts theoretisch nicht.
Dsimon24 schrieb:
Im Freitext-Feld nur zwingend notwendig, wenn im Dropdown
die Option 'Anderer Grund' ausgewählt wurde. Wie kann ich das am besten realisieren?
Leg nen change-Handler auf das Element und setz dynamisch das required-Attribut.

https://jsfiddle.net/9mypvk6r/
 
  • Gefällt mir
Reaktionen: CitroenDsVier und RalphS
Zurück
Oben