webForumDet fria alternativet

Stoppa form submit efter ett klick!

11 svar · 314 visningar · startad av Jacek

JacekMedlem sedan apr. 2000169 inlägg
#1

Jag kan typ inget om java, bara så ni vet..
Därför undrar jag hur en javascript kod kan se ut om;
Jag har ett formulär med ett formulär fält. Efter man tryckt p åsubmit knappen så skall skall man inte kunna trycka p åden igen innan sidan flyttats till det angivna actionet.
Så att man inte kan trycka 2 gånger snabbt på knappen så att det kommer in 2 poster i t.ex. en gästbok.

nån som hajja?

------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>

KimMedlem sedan jan. 20007 697 inlägg
#2

Det tror jag nog tyvärr inte att man kan göra.

Däremot kan du ju alltid lagra IP och klockslag i gästboksdatabasen och sen kontrollera så att det har gått en viss tid mellan de olika inläggen.

PatrikBMedlem sedan mars 20002 836 inlägg
#3

Visst borde väl det vara möjligt att göra.
Man kan ju vid klick "gömma" submit-knappen, sätta en cookie som expirar n antal minuter/sekunder eller vilket tidsintervall man nu vill ha efter en postning.

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

KimMedlem sedan jan. 20007 697 inlägg
#4

Å andra sidan så är det ofta bara att trycka enter så räknas det som en "submit" av formuläret.

PatrikBMedlem sedan mars 20002 836 inlägg
#5

jo, men man kan göra submit knappen som en länk-bild och i onClick lägga all js-kod för att submitta och gömma "submit-knappen"(bilden).

Fast, det säkraste är att sätta en cookie för att slippa dubbelpostningar.

PS .. finns en bra artikel på www.asptoday.com om hur man kan göra ... kräver att du är prenumerant där för att kunna "leta" reda på artikeln och kunna kika på den :( ... DS

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

PatrikBMedlem sedan mars 20002 836 inlägg
#6

kom på en annan sak.

man borde oxå kunna "gömma" hela formet ... onSubmit så att säga.

 onSubmit:"document.test.style.visibility = 'hidden';"

vet inte om det funkar då jag inte har ngn "sirap" server att testa mot =(

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

[Redigerat av PatrikB den 16 jan 2002]

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Gör ett scriptblock där du först definierar submited=false; Sedan kan du skapa en funktion för att validera formuläret function checkForm(formObj). Sist i den funktionen kan du då använda;

if(submited==false){
  submited=true;
  return true;
} else {
  alert('Formuläret skickas, var god vänta');
  return false;
}

Funkar oavsett om du klickar på en enter-knapp eller trycker return i ett fält.

------------------
/ J

[Redigerat av Jojoxx den 16 jan 2002]

fundrusseMedlem sedan jan. 2002286 inlägg
#8

Skall det se ut liknande detta?

<script language="JavaScript">
function form(){

if (document.skicka.inlagg.value.length \< 5){
	alert("skriv ett inlägg");
	return false;

}
if(submited==false){
submited=true;
return true;
} else {
alert('Formuläret skickas, var god vänta');
return false;
}
}
</script>

för det vill inte funka riktigt!

datamMedlem sedan jan. 200228 inlägg
#9

testa denhära
http://www.dynamicdrive.com/dynamicindex11/submitonce.htm

------------------
-------------------------
Data M
alias Martin
datam@passagen.se

JojoxxMedlem sedan juni 20004 308 inlägg
#10

Du måste som sagt definiera submited=false; först. (allra först i script-blocket). ...och du använder väl onSubmit="return form();" i <form>-taggen?

------------------
/ J

fundrusseMedlem sedan jan. 2002286 inlägg
#11

Skriv ut hur koden skall vara istället..
jag kan nada om JavaScript :/

JojoxxMedlem sedan juni 20004 308 inlägg
#12
<script language="JavaScript" type="text/javascript">
submited=false;
function checkform(formobj){
	if (formobj.inlagg.value.length < 5){
		alert("skriv ett inlägg");
		return false;
	} else {
		if(submited==false){
			submited=true;
			return true;
		} else {
			alert('Formuläret skickas, var god vänta');
			return false;
		}
	}
}
</script>
<form action="url" onSubmit="return checkform(this);">
<input type="text" name="inlagg">
<input type="submit">
</form>

------------------
/ J

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