webForumDet fria alternativet

En form och två submittknappar

4 svar · 247 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Min form innehåller två olika submittknappar. Jag vill att samma JS-funktion ska ta hand om resultatet, oavsett vald knapp, men funktionen måste veta vilken submit som tryckts in. Hur fixar jag det?

Formen ser just nu ut så här:

<form id="jsformen" onsubmit="return addWord(this);">
<table><tr><td id="wordBoxHeader" colspan="3"><center>You clicked on:</center></td></tr>
       <tr><th>Pos</th><th>The Word</th><th>Direction</th></tr>
       <tr><td id="wordBoxAcrossPos">-</td>
           <td><input type="text" id="wordBoxAcrossWord" disabled></td>
           <td><input type="submit" id="wordBoxAcrossSubmit" value="Add Across!" disabled>
               <input type="hidden" id="wordBoxAcrossStart" value=""></td></tr>
       <tr><td id="wordBoxDownPos">-</td>
           <td><input type="text" id="wordBoxDownWord" disabled></td>
           <td><input type="submit" id="wordBoxDownSubmit" value="Add Down!" disabled>
               <input type="hidden" id="wordBoxDownStart" value=""></td></tr>
</table></form>

Vore det bättre att ge submitknapparna samma id och olika värden?

  1. Vad gör this i onSubmit-anropet? Alltså vad refererar den till? Formen? Submittknappen? Varför behövs den? (Hittade skrivsättet via sökning här.)
Peter SMedlem sedan dec. 20025 483 inlägg
#2
  1. Använd type="button" om addWord() alltid returnerar falskt (vilket jag antar att den gör). Sedan:
onsubmit="return false"

<input type="button" onclick="addWord(this.form,[b]'id för knappen'[/b])"

function addWord(x,y){
  // y = nedtryckta knappens id
  ...
}
  1. this refererar till formuläret i det här fallet. Det gör att du med x ovan har ett bekvämt sätt att accessa dess medlemmar på. :)
aasahMedlem sedan mars 20034 471 inlägg
#3

Ah! Tack för förklaringen! :)

Peter S skrev:

  1. Använd type="button" om addWord() alltid returnerar falskt (vilket jag antar att den gör).

:q Varför behöver den returnera något? Jag vill bara att ordet i input ska hackas up i bokstäver och föras in i korsordet (vilket addWord ska fixa) inte ladda om sidan eller något... Vad innebär return false i det här fallet?

Sedan:

onsubmit="return false"

:q Var ska det stå? I Formtaggen?

Peter SMedlem sedan dec. 20025 483 inlägg
#4

aasah skrev:

Ah! Tack för förklaringen! :)

:q Varför behöver den returnera något? Jag vill bara att ordet i input ska hackas up i bokstäver och föras in i korsordet (vilket addWord ska fixa) inte ladda om sidan eller något...

Om du har en submit-knapp kommer formuläret att postas, såvida du inte har return false i onsubmit.

aasah skrev:

Vad innebär return false i det här fallet?

:q Var ska det stå? I Formtaggen?

Ersätter du submit-knapparna med type="button"-varianter, behöver du egentligen inte ovanstående. Men, ja, det skall stå i <form>-taggen.

aasahMedlem sedan mars 20034 471 inlägg
#5

Tackar! :e Egentligen borde båda svaren accepterats, men det går ju inte...

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