Du kanske kan lägga in någonting liknande i "onsubmit"-attributet:
<form onsubmit="document.getElementById('txMessage').value=''"...
...
12 svar · 342 visningar · startad av Palle
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?
Du kanske kan lägga in någonting liknande i "onsubmit"-attributet:
<form onsubmit="document.getElementById('txMessage').value=''"...
...
Testat det redan och det hjälpte inte det heller..
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.
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"..
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
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]
Eftersom sidan ligger i en ram får du modifiera koden en aning:
...
parent.frames[ "ramens_namn" ].document.getElementById( "txMessage" );
...
Nja.. formuläret ligger inte i någon frame.
Kanske var lite otydlig.. ..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.
Så du använder en "iframe"? Då blir det så här; i "chat_main.asp"
<body onload="parent.document.getElementById('txMessage').value=''">
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?
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.