11. maj 2021 - 18:40Der er
11 kommentarer og 1 løsning
Kun 1 ud af 2 select options må vælges
Hej
Jeg kan ikke lige knække koden. Er der en som kan vise mig rette vej? Har en formular hvor der er 2 options vælgere, som man ikke må kunne vælge begge 2. Det skal ikke være muligt at vælge både DW og DW1. enten eller... Derfor har jeg på min submit button sat ind at function ValidateDW() skal eksekveres inden formen bliver submittet. I funktionen er min tanke at der skal testes på om værdien fra DW og DW1 er lig med 2. Er det tilfældet skal en alert komme....... Men det vil ikke fungere ud fra det jeg har tænkt. Er der en gravet Javascript haj som kan hjælpe mig lidt på vej?
<script> function validateDW() { var x = document.getElementById("DW").value; var y = document.getElementById("DW1").value; if (x + y = 2) { alert("Du kan ikke vælge både DW og DW1"); return false; } } </script>
kan du ikke lave det, så en select i den ene bare nulstiller den anden - så undgår du validate, da der ikke kan være valg i begge på en gang. Noget med OnChange() i begge. Er der valgt andet end 0, så sættes den anden til 0
#2: uden at have efterprøvet det, så tror jeg måske du skal have konverteret x og y til talværdier. Mon ikke de når frem som strenge, og derfor vel sagtens snarere giver "11" frem for 2 når de lægges sammen.
@claes57 det lyder som en god mulighed. Der kommer jeg lidt til kort i hvordan jeg skifter value på den modsatte select optiion med en function.... kan du give et hint?
#4: umiddelbart hvad jeg har læst mig frem til giver .value en værdi.... men jeg er også nybegynder. Har prøvet at sætte if (x = 1 && y = 1) ind, men det giver mig heller ikke det ønskede resultat. Er der noget i onsubmit der er forkert? Skal den ligge i <form onsubmit="validateDW()"> ??
#1: Ja, det gør. Men det er lidt "held" for dig, at den gør det, fordi Javascript er så "tålmodig" med at man sammenblander variabeltyper.
Hvis du fx i stedet havde udskiftet... if (x == 1 && y == 1) ...med... if (x === 1 && y === 1) ...ville du kunne se, at det ikke virker længere. Og det er fordi html-formen ganske rigtigt videregiver select-værdierne som strings.
For at gøre det lidt mere korrekt, tænker jeg derfor du burde udskifte de to variabel tildelinger med:
var x = parseInt(document.getElementById("DW").value); var y = parseInt(document.getElementById("DW1").value);
Så vil både din oprindelige og din nye udgave virke. Fordi x og y grundlæggende er talværdier.
En lidt mere automatiseret løsning kunne være nedenstående. Men den går lidt bagom ryggen på brugeren, og hvis ikke brugeren opdager, at et tidligere valg er blevet omgjort, kan det føre til frustration:
<script> function resetSelector(str, value) { console.log(str + "---" + value); if (value !== "0" && document.getElementById(str).value !== "0") { document.getElementById(str).value = "0"; alert("Du kan ikke vælge både DW og DW1. Den anden selector nulstilles."); } } </script>
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.