WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   JavaScript (https://www.wn.se/forum/showthread.php?t=2437)

Anders 2004-05-30 01:52

Har tänkt göra så att en formulärsknapp inaktiveras då man trycker på den. Formuläret ska helst skickas också. Har försökt med detta:
Kod:

<input type="submit" name="subm_btn" value="Post"
onclick="javascript: this.form.subm_btn.disabled = true; this.form.subm_btn.submit; return true;" />

Inaktiveringen går bra, men formuläret skickas aldrig. Tips?

Kristofer 2004-05-30 02:26

Så här kan du göra kom jag fram till efter några test:

<form action="...." method="post" name="login" >

<input type="submit" name="subm_btn" value="Post" onclick="javascript: this.form.subm_btn.disabled = true; document.login.submit();">

</form>

Anders 2004-05-30 11:18

Tack, det fungerar bra om man har en submit. Jag har på ett ställe två, hur gör man då?

Robert 2004-05-30 11:45

<input type="submit" name="subm_btn" value="Post" onclick="javascript: this.form.subm_btn.disabled = true; this.form.otherbutton.disabled = true; document.login.submit();">

Kristofer 2004-05-30 12:06

Tveksamt om det sista fungerar då den kan submitta även om knapparna är disabled.

Alltså, vad tjänar man på att ha två submitknappar i SAMMA formulär?

Har jag aldrig behövt och jag är för nyvaken för att förstå meningen med det...

Robert 2004-05-30 13:40

"Submitta även om knappen är disabled"? ... uhm, när du trycker på en knapp så disables båda. Går även att köra så de blir osynliga (med div taggar)... och då är det jädrans svårt att lyckas klicka 2 gånger på en knapp! =)

Om han har flera formulär på samma sida där formulären gör mer eller mindre olika saker så att man av layoutskäl har 2 olika submits. Även tex en "radera", "ok", "avbryt" i samma formulär kan ju vara av typen submit.... därav flera submits

Mitt lilla utvecklade exempel av din javascript var att jag vill visa att det bara är att rada upp javascript-satserna efter varandra, jag tror det var där skon klämde, inte att mitt exempel specifikt skulle fungera; jag vet ju inte vad hans formulär eller submit knappar heter! <_<

Anders 2004-05-31 01:16

Ok, säg att jag har två knappar "Ja" och "Nej". När man trycker på en av dem ska båda inaktiveras och formuläret skickas. Har fixat detta med:
Kod:

<form>
    <input type="submit" name="btn1" value="Ja" onclick="this.form.submit(); this.disabled=true; this.form.btn2.disabled=true;">
    <input type="submit" name="btn2" value="Nej" onclick="this.form.submit(); this.disabled=true; this.form.btn1.disabled=true;">
</form>

Men mitt problem är att när jag sedan kollar $_POST i PHP så är ingen av knapparna satta, bara de övriga fälten i formuläret. Hur ska jag göra för att veta vilken knapp som användaren klickade på?

Ny-Bostad 2004-06-02 00:47

Citat:

Originally posted by Anders@May 31 2004, 01:16
... När man trycker på en av dem ska båda inaktiveras och formuläret skickas. ...
Kod:

... onclick="this.form.submit(); this.disabled=true; this.form.btn2.disabled=true;" ....

Men vad är det för mening med att försöka inaktivera knapparna på klienten efter att formuläret har skickats ?
Även om du byter plats på koden ovan så att knapparna blir disabled strax innan (en mikrosekund innan kanske) submit anropas så blir det ju bara en mycket tillfällig inaktivering som görs i webbläsaren och som inte kommer att hänga med till nästa sida.

Anders 2004-06-02 01:24

Det är för att, precis som här på forumet, förhindra dubbelpostningar av formulär.

FredrikMH 2004-06-02 10:51

Läs av något annat istället för knapparna? Jag vet inte om det går att ändra värde på en hidden med javascript men du slipper att "klydda" om det fungerar.

Anders 2004-06-02 15:09

Citat:

Originally posted by FredrikMH@Jun 2 2004, 10:51
Läs av något annat istället för knapparna? Jag vet inte om det går att ändra värde på en hidden med javascript men du slipper att "klydda" om det fungerar.
"Klydda"? :)

Jo, jag kommer lägga till en
Kod:

<input type="hidden" name="choice" value="" />
och sätta denna med JS. Det känns inte bra, borde gå att lösa bättre...

Ny-Bostad 2004-06-16 15:18

Citat:

Originally posted by Anders@Jun 2 2004, 01:24
Det är för att, precis som här på forumet, förhindra dubbelpostningar av formulär.
Själv har jag inte försökt dubbelposta något här (och vill inte prova det heller om det skulle råka "lyckas") och orkar inte heller kolla igenom koden för att se om det kan tänkas finnas något bra javascript som verkar förhindra dubbelpostningar, men om du nu tydligen vet att det finns något formulär här på forumet som förhindrar dubbelpostningar med hjälp av javascript så kan du väl i så fall kolla (med "view source" eller skriv in en url för .js-filen) hur det javascriptet ser ut ?

Men annars är det ju bättre att förhindra dubbelpostningar på servern eftersom det då fungerar oavsett webbläsare/inställningar på klienten. Det kan man göra genom att slumpgenerera ett unikt värde i en hidden variabel som man sedan på servern kollar om man redan har hanterat den.

"Introduce Synchronizer Token":
http://archives.java.sun.com/cgi-bin/wa?A2...est&F=&S=&P=941


Alla tider är GMT +2. Klockan är nu 03:00.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson