PalleMedlem sedan apr. 20003 174 inlägg 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 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 Testat det redan och det hjälpte inte det heller.. :(
Peter SMedlem sedan dec. 20025 483 inlägg 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 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 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 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 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 Nja.. formuläret ligger inte i någon frame. :l
PalleMedlem sedan apr. 20003 174 inlägg 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 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 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 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.
:)