Avatar billede steen_hansen Forsker
06. november 2022 - 17:25 Der er 2 kommentarer og
1 løsning

Kan man kombinere 2 onclick funktioner på samme submit button?

Jeg har en side med en del knapper. De hedder allesammen "ActiveChoise", men med forskellige værdier.

Meningen er, at det skal være nemt og brugervenligt. Så derfor skal man bare trykke på knappen én gang, og man har foretaget et valg. Det hvad dette gør: onclick="this.form.submit();"

<div class="col-md-4">
    <button type="submit" name="ActiveChoise" value="200" class="btn btn-<% If RSButtonChosen("status") = 200 Then %>info<% Else %>primary<% End If %> btn-block btn-lg" onclick="this.form.submit();">B</button>
</div>
<div class="col-md-4">
    <button type="submit" name="ActiveChoise" value="430" class="btn btn-<% If RSButtonChosen("status") = 300 Then %>info<% Else %>primary<% End If %> btn-block btn-lg" onclick="this.form.submit();">C</button>
</div>
<div class="col-md-4">
    <button type="submit" name="ActiveChoise" value="400" class="btn btn-<% If RSButtonChosen("status") = 400 Then %>info<% Else %>primary<% End If %> btn-block btn-lg" onclick="this.form.submit();">D</button>
</div>




Jeg tæller brugere op for hhv B og C. Der må til alle tider være en forskel på 1 eller -1 Aldrig 2 (eller højere/lavere). Så jeg skal have lagt et tjek ind:

Hvis antallet af brugere, der har valgt B, er det samme som antallet af brugere, som har valgt C, ser formlen således ud:

B = 3
C = 3
B - C = 0

Så det overholder kriteriet med, at differencen aldrig må overstige 1 eller -1

Både B og C kan vælge en anden værdi, som er forskellig fra B eller C (status <> 200 og 300).

Hvis brugere, som har valgt B, og ønsker at vælge f.eks. F (status = 500), er der intet forgjort i dét. Så vil ligningen se således ud:

B = 2
C = 3
2 - 3 = -1

Så bliver kravet på en diff på max 1 eller -1 overholdt

Men hvis bruger, som har valgt B nu ønsker at vaælge C, bliver kriterierne ikke overholdt. Ligningen vil se således ud:

B = 2
C = 4
B - C = -2

Så for at forhindre det kan ske, håber jeg det kan "bygges" ind i  onclick="this.form.submit();

Jeg fandt en lille stump på Internettet:

onclick="if (confirm('Are you sure?')) { this.form.submit(); } else { return false; }"

Her skal Annullér knappen dog ikke med. Handlingen overholder ikke kriterierne. Det skal ikke kunne lade sig gøre at vælge C, når man har valgt B, og hvis B = C. Der skal stå noget i retning af

"Denne handling er ikke tilladt", og så ellers kun en OK knap man kan trykke på

Kan disse 2 funktioner lægges/kombineres på den samme knap? Hvis kriterierne bliver overholdt, skal der bare submittes. Hvis kriterierne ikke bliver overholdt, skal brugeren have denne msgbox op, hvor brugeren får at vide, at den er ikke gangbar.

Brugeren må foretage et andet valg, som er forskellig fra B eller C, hvis

B = C
brugeren har i første omgang har valgt B, og ønsker at vælge C (knap B er valgt)
brugeren har i første omgang har valgt C, og ønsker at vælge B (knap C er valgt)

onclick="this.form.submit();"
onclick="if (B = A) then (Det må du ikke) else { this.form.submit(); }"

Jeg aner ikke hvordan det skal kombineres, hvis det kan lade sig gøre. Jeg håber du er ekspert.
Avatar billede ejvindh Ekspert
07. november 2022 - 09:31 #1
Umiddelbart tænker jeg måske det er en mere brugervenlig måde, hvis du simpelthen fortløbende "greyer" de muligheder, som ikke er tilladt (evt. med en lille forklarende tekst, når man holder musen henover).

Men hvis du ikke er med på dét, kunne en løsning være at lave en javascript funktion, som du kalder med dit onclick (i stedet for at submitte direkte). I den funktion, kan du jo lægge alle mulige former for tjek og advarsler ind i.

Eller for at følge dit sidste forslag, noget i stil med:
onclick="if (B == A)) { alert('Det maa du ikke!');} else { this.form.submit(); }"
(alert giver, modsat confirm, kun mulighed for at klikke ok)
Avatar billede steen_hansen Forsker
07. november 2022 - 14:01 #2
Det er så flot, Ejvind

Jeg deaktiverer faktisk de submit buttons i forvejen. Så det overvejede jeg faktisk i går aftes. Der er ingen grund til at lave et tjek på buttons, når man trykker, men deaktivere den, så man slet ikke kan trykke.

Jeg har lavet et tjek på alle buttons. Bare ikke hvis bruger har

- valgt B, og gerne vil trykke på C
- det samme med E til F, og H til I

Tak for hjælpen, Ejvind 😀
Avatar billede ejvindh Ekspert
07. november 2022 - 15:18 #3
Velbekomme :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester