webForumDet fria alternativet

Fler formulär samma sida, nolla fält vid submit.

11 svar · 395 visningar · startad av Zaiman

ZaimanMedlem sedan dec. 20014 239 inlägg
#1

Har en liten kluring.

På samma sida har jag flera formulär, döpta till olika namn.
Alla formulär innehåller ett textfält som heter antal med ett förbestämt innehåll.

När submit sker i formuläret kollas att det är ifyllt och formuläret skickas till en annan Frame. Helt i sin ordning.

Men nu vill jag att vid submit ska endast det formuläret som submittats ska få en nolla i fältet antal.

Någon som har en bra pekar så jag kommer i rätt riktning? Eller kanske redan löst det på något smart sätt?

Har jag en sida med bara ett formulär fungerar det med

  document.form.antal.value = 0 ;

Men är det fler formulär på samma sid går det inte så lätt.

Tacksam för hjälpen i förväg *ler*

ZaimanMedlem sedan dec. 20014 239 inlägg
#2

Ingen som har haft samma problem???

Börjar bli lite *desperat*, kan inte sluta grunna på problemet.

@ndersMedlem sedan juni 200032 969 inlägg
#3

Kod? Url?

Ge oss lite mer...

ZaimanMedlem sedan dec. 20014 239 inlägg
#4

Utlägg av formuläret:

<%Do While NOT rs.EOF%>
<form action='toBasket.asp?id=<%=Request.Querystring("id")%>' method="post" name="F<%=Trim(rs("artnr"))%>" target="right" onsubmit = "return CheckField(this);">
  <table border="0" cellspacing="0" cellpadding="2">
  <tr>
 <td class="tableSmallYellow" width="100"><%=Trim(rs("artnr"))%></td>
	     <td class="tableSmallYellow" width="200"><%=rs("BENAEMN")%></td>
	      <td class="tableSmallYellow" width="50"><%=rs("PRIS")%></td>
	    <td class="tableSmallYellow" width="20"><%=rs("ILAGER")%></td>
	     <td class="tableSmallYellow"><input type="text" name="antal" value="0" size="2" onKeyPress="return checkIt(event);">&nbsp;&nbsp;
	<input class="formButton" type="submit" name="" value="L&auml;gg i korg"></td>
	<td class="tableSmallYellow" width="182"><a href='("#")' title='<%=Rtrim(rs("anm1"))& " " & Rtrim(rs("anm2"))%>'><%

IF left(rs("anm1"),1) <> " " then
response.write"Mer info.."
END IF
%></a></td>
	<td><input type="hidden" name="benaemn" value='<%=Rtrim(rs("BENAEMN"))%>'><input type="hidden" name="artnr" value="<%=Rtrim(rs("artnr"))%>"></td>
	</tr>
	</table>
	</form>
<% rs.MoveNext
 loop
 Set rs = Nothing
sDb.Close %>

Vid submit kollas detta:

	function CheckField(form) {
			if  (form.antal.value == 0)
				alert("Du måste välja ett antal större än noll");
			else
				return true;
			return false;

	}

Fungerar bra.

Men jag vill även sätta en nolla i fältet antal när det är klart.
Mycket luddigt förklarat.. Jag vet....

Arbetsgången är tänkt:
1. Jag väljer antal i rutan antal
2. Jag klickar på lägg i korg
3. Sidan skickas med parametrar. (Till en annan frame)
4. fältet nollställs

Hoppas ni förstår mig... *ler*

@ndersMedlem sedan juni 200032 969 inlägg
#5

Jag är inte säker på att jag förstår helt, men...

	function CheckField(form) {
			if  (form.antal.value == 0) {
				alert("Du måste välja ett antal större än noll");
				return false;
			} else {
				form.antal.value=0;
				return true;
			}
	}
ZaimanMedlem sedan dec. 20014 239 inlägg
#6

Mmmm.. inte riktigt så enkelt tyvärr..
Det fungerar bara om det är ett formulär på sidan inte flera.

I detta läge kommer väl formuläret att nollas innan själva submit händer?

Vilket innebär att jag skickar iväg en nolla till nästa sida? Eller har jag fel?

@ndersMedlem sedan juni 200032 969 inlägg
#7

I detta läge kommer väl formuläret att nollas innan själva submit händer?

Ja, det stämmer ju. My bad! Du får låta mottagande sida skriva ut ett javascript som nollar fältet. Sätt ett unikt id på varje fält så kommer det inte bli några problem att nollställa.

På vilket sätt fungerar det inte när du har fler formulär? Felmeddelande?

ZaimanMedlem sedan dec. 20014 239 inlägg
#8

Önskar jag kunde ge ett felmeddelande... Men jag får inget *ler*
Den bara låter bli att exekvera eller så exekverar den men inte lämnar något felmess.

Annan lösning kanske:
Skicka tillbaka användaren så att sidan uppdateras. Alla fält har ju noll som startvärde. Visst det blir lite med datatrafik till databasen men vad gör det när det är få användare till en början.
Alternativt skriva ut ett javascript på mottagande sida som uppdaterar sidan jag kom ifrån? *klura klura*...

Vad välja tro... Idé ?

Det finns ju alltid fler sätt att flå katten på...

ZaimanMedlem sedan dec. 20014 239 inlägg
#9

Såhär blev det:

På sidan som tar emot skriver jag ut ett skript:

Response.write("<script>window.parent.main.location.reload();</script>")

Visst genererar det mer trafik till databasen.. Men so what.
Just nu är det inte mycket trafik som går och det lär inte bli mängder heller i första taget.

Tack @nders för bollningen, det hjälpte.

Det finns säkert ett bättre sätt att lösa det på men det får duga så länge.

@ndersMedlem sedan juni 200032 969 inlägg
#10

:)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#11
I högerramen:
<script type="text/javascript">
window
// Ange rätt namn för din andra ram här:
var tDoc = parent.left.window.document;

// Ändrat till Request.Querystring
tDoc.forms["<%=Request.Querystring("benaemn")%>"].antal.value = 0;
</script>
ZaimanMedlem sedan dec. 20014 239 inlägg
#12

Tackar nitro2k01, det var en snyggare/bättre lösning.

Och så lärde man sig lite nytt oxå.

Och i asp Request.Querystring("benaemn")

Tack igen..

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