webForumDet fria alternativet

btn.disabled vid frm.submit

4 svar · 267 visningar · startad av lunne82

lunne82Medlem sedan dec. 2003153 inlägg
#1

(Forumet som särskriver "javascript" i mina onClick)
Jag har ett formulär med två submit-knappar. När jag trycker på en av dem ska båda inaktiveras samt att formuläret ska skickas. Har provat lite olika men inget som funkar bra. Koden nedan kommer bara inaktivera knapparna

<form name="frm" ... >

<input type="submit" name="btn1" value="Ja"
onClick="javascript: this.form.btn1.disabled = true; 
this.form.btn2.disabled = true; this.form.btn1.submit(); return true;" />

<input type="submit" name="btn2" value="Nej"
onClick="javascript: this.form.btn1.disabled = true; 
this.form.btn2.disabled = true; this.form.btn2.submit(); return true;" />

</form>

Och denna kod kommer inaktivera knapparna, men inte alltid skicka rätt.

<form name="frm" ... >

<input type="submit" name="btn1" value="Ja"
onClick="javascript: this.form.btn1.disabled = true; 
this.form.btn2.disabled = true; document.frm.submit(); return true;" />

<input type="submit" name="btn2" value="Nej"
onClick="javascript: this.form.btn1.disabled = true; 
this.form.btn2.disabled = true; document.frm.submit(); return true;" />

</form>

Går det att göra så formuläret skickas med en av knapparna (Ja eller Nej) är "klickade"? Om man, som i mitt senare exempel, gör så att formuläret skickas utan att klicka på en knapp så är det svårt att sen i PHP kontrollera vilken knapp som trycktes på. Går detta lösa?

PepeJeriaMedlem sedan feb. 2003774 inlägg
#2

Om vi tar första exemplet, du behöver inte köra med this.form.btn1.disabled, det räcker med this.disabled.

Sen behöver du inte ha javascript: på en onclick event, eftersom det är givet att ett script kommer att användas.

this.form.btn1.submit() submittar knappen, inte formen, därav javascript error.

prova med detta:

<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>
lunne82Medlem sedan dec. 2003153 inlägg
#3

Testade koden. Den skickar formuläret, men den sätter aldrig någon av knapparna. Om man kollar på vilka fält som skickas med POST så är det bara fälten i formuläret som skickas, ingen av knapparna Ja eller Nej. Går detta lösa?

PepeJeriaMedlem sedan feb. 2003774 inlägg
#4

Så fort knappen är disablead så skickas den inte vidare till nästa sida, den "försvinner" från formuläret. Dock tycker man att den borde skicka den eftersom man submittar först och sen disablear... hm...

Nexus86Medlem sedan okt. 20023 030 inlägg
#5
<form>
	<input type="hidden" name="knapp" value="">
	<input type="submit" name="btn1" value="Ja" onclick="this.form.knapp.value='Ja'; this.form.submit(); this.disabled=true; this.form.btn2.disabled=true;">
 	<input type="submit" name="btn2" value="Nej" onclick="this.form.knapp.value='Nej'; this.form.submit(); this.disabled=true; this.form.btn1.disabled=true;">
</form>

Sedan i PHP kontrollerar du bara vad det står i fältet knapp. :)

if ($_POST['knapp'] == 'Ja') {  // Ja-knappen

} else {  // Nej-knappen

}
130 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)