webForumDet fria alternativet

Rensa formfält med setTimeout

12 svar · 342 visningar · startad av Palle

PalleMedlem sedan apr. 20003 174 inlägg
#1

Hej,

Till en liten chatfunktion använder jag javascript för att validera att nickname och meddelande
skickas till chatten, för att sedan tömma meddelanderutan igen använder jag följande:

[RED]setTimeout("document.getElementById('txMessage').value=''", 1000);[/RED]

Fungerar bra i IE, men i NN och Moz finns meddelandet kvar.. vilket inte är önskvärt. ;)
Någon som vet hur jag tömmer det nedrans formfältet i NN och Moz per automatik när formuläret subbmittas?

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

Du kanske kan lägga in någonting liknande i "onsubmit"-attributet:

<form onsubmit="document.getElementById('txMessage').value=''"...
...

:)

PalleMedlem sedan apr. 20003 174 inlägg
#3

Testat det redan och det hjälpte inte det heller.. :(

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

Jag tror att jag missförstod dig... är "txMessage" namnet på den textruta som meddelandet står i och det är denna som skall rensas när meddelandet har skickats? Det bör väl isåfall ske automatiskt i och med att formuläret skickas.

:)

PalleMedlem sedan apr. 20003 174 inlägg
#5

Ja, txMessage är en textarea där besökaren skriver sitt meddelande.
Det är denna som jag vill tömma på information. :)

Nja, jag skickar formuläret via target direkt till frame´n som hanterar formuläret och laddar således aldrig om "hela sidan"..

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

Ok, då kanske du lägga in ovanstånde kod i <body onload="..." på sidan i ramen istället?

Red. Något modifierad version givetvis ;)

:)

PalleMedlem sedan apr. 20003 174 inlägg
#7

Jag har testat det också, men det ger bara 'document.getElementById(...)' är null eller inte ett objekt

Så här ungefär ser det ut: (Fungerar som sagt perfa i IE.. ;) )

Formulär:

[RED]<form method="post" ...  onsubmit="return saveChatMessage();">
     <input type="text" name="txName" ... />
     <textarea name="txMessage" ... ></textarea>
</form>
[/RED]

 

Funktionen:

[RED]function saveChatMessage() {

	username = document.getElementById('txName').value.length;
	usermess = document.getElementById('txMessage').value.length;

	if (username < 1) {
		alert("Du måste ange ditt namn!");
		document.getElementById('txName').focus(); 
		return false; 

	} else if (usermess < 1) {
		alert("Det går inte att posta tomma meddelande!"); 
		document.getElementById('txMessage').focus(); 
		return false; 

	} else {
		setTimeout("document.getElementById('txMessage').value=''", 1000);

	}
}[/RED]
Peter SMedlem sedan dec. 20025 483 inlägg
#8

Eftersom sidan ligger i en ram får du modifiera koden en aning:

...
parent.frames[ "ramens_namn" ].document.getElementById(  "txMessage" );
...

:)

PalleMedlem sedan apr. 20003 174 inlägg
#9

Nja.. formuläret ligger inte i någon frame. :l

PalleMedlem sedan apr. 20003 174 inlägg
#10

Kanske var lite otydlig.. :r ..här kommer en liten sitemap:

default.asp:
  • Här ligger själva formuläret.

chat_main.asp
  • Här ligger asp-funktionen som hanterar informationen från formuläret.
  • Ligger i en iframe.

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

Så du använder en "iframe"? Då blir det så här; i "chat_main.asp"

<body onload="parent.document.getElementById('txMessage').value=''">

:)

PalleMedlem sedan apr. 20003 174 inlägg
#12

Jo det fungerar.. men ..eftersom iframe´n uppdateras med en meta var 10´e sekund är det
väldigt enerverande om formfältet man håller på att skriva i tömms på innehåll var 10´e sekund. ;)

Det var därför jag ville ha in det i min funktion som tömmer fältet precis efter submit. :)
Går det tror du?

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

Eftersom du använder dig av document.getElementById() så måste textarean ha ett id vars värde i detta fall skall vara "txMessage".

Då bör din ursprungliga kod fungera.

:)

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