webForumDet fria alternativet

Ajax formulär

14 svar · 848 visningar · startad av henkz

henkzMedlem sedan apr. 2002183 inlägg
#1

Formuläret nedan fungerar när man skriver och trycker på Enter knappen.
Dock inte div med bilden.

Behöver hjälp med två saker:
1. Skulle vilja att det även går att klicka på bilden för skickning av formuläret.
2. Om man trycker shift+enter ska det bli radbyte.

Någon som kan hjälpa mig i rätt väg?

<form name="insertus">
<textarea id="msg" name="msg" rows="2" onKeyDown="if(event.keyCode==13) makeRequest('chatt_save.asp?chattid=<%=chattid%>&msg='+this.value+'&rnd='+Math.random());" style="overflow:auto;width:100%;height:40px;"></textarea>

<div style="width:102px;height:69px;cursor:hand;" onKeyDown="if(event.keyCode==13) makeRequest('chatt_save.asp?chattid=<%=chattid%>&msg='+this.value+'&rnd='+Math.random());">
<img src="design/bigsubmit.jpg" width="102" height="68" alt="" border="0" >
</div>
</form>
TeChNiChMedlem sedan maj 20074 inlägg
#2

Ska inte vara så svårt, skapa först en variabel som håller reda på om shift är nertryckt sedan shiftar du mellan true/false med den variabeln.... ex:

<script type="text/javascript">
var ShiftIn = 0;
</script>
<textarea id="msg" name="msg" rows="2" onkeyup="if (event.keyCode==16) ShiftIn = 0;" onKeyDown="if (event.keyCode==16) ShiftIn = 1;if((event.keyCode==13) && (ShiftIn == 0)) makeRequest('chatt_save.asp?chattid=<%=chattid%>&msg='+this.value+'&rnd='+Math.random());" style="overflow:auto;width:100%;height:40px;"></textarea>

tror den bör funka, har inte testat men så funkar vl principen iallafall tror dock att mac kan vara kinkig när det gäller keycode 16, nån läsare har jag för mig krånglar, mest troligt safari.

sedan till få bilden att skicka så lägg till detta i img-taggen

onclick="makeRequest('chatt_save.asp?chattid=<%=chattid%>&msg='+document.getElementById('msg').value+'&rnd='+Math.random());"

du kan också göra en länk om du hellre vill...
Inget testat men som sagt bör funka :)

colioneMedlem sedan juni 20014 421 inlägg
#3

Varför inte använda:

event.shiftKey

TeChNiChMedlem sedan maj 20074 inlägg
#4

event.shiftKey gör jobbet också, det buggar i Firefox v1 - v1.5 eller något sånt... resultatet blir då alltid true om jag minns rätt.

henkzMedlem sedan apr. 2002183 inlägg
#5

Tack för hjälpen!
Funkade nästan perfekt.

När jag gör radbrytning med shift+enter, hur kan jag plocka ut denna radbrytning?
jag tänkte köra en replace:
msg = Replace(msg, vbCrLf, "<br>")

Detta fungerar inte. Hur kan jag lösa detta?

henkzMedlem sedan apr. 2002183 inlägg
#6

Behöver fortfarande lite hjälp med detta.

Kan man inte på nått vis få till detta? eller är det tekniskt omöjligt?

colioneMedlem sedan juni 20014 421 inlägg
#7

Prova med att bara göra en replace på vbCr eller vbLf

henkzMedlem sedan apr. 2002183 inlägg
#8

Fungerar tyvärr inte. Har provat det.

TeChNiChMedlem sedan maj 20074 inlägg
#9

vet inte exakt vad du vill göra men
prova något sådant:

msg = msg.replace(/\r\n/, "<br />");

lek lite med regex så får du nog till det precis som du vill ha ;)

henkzMedlem sedan apr. 2002183 inlägg
#10

Det hela är tänkt att fungera som MSN.

När man trycker "shift+enter" blir det radbyte och vanlig "enter" skickas formuläret.

Det hela fungerar på sidan, men när jag ska få radbrytningen ersatt med <br> fungerar det inte. Det blir ingen radbrytning alls.
Har försökt erätta med vbCr, vbLf, vbcrlf , det löser inte problemet.
.asp ex: msg = Replace(msg, vbcrlf, "<br>")

Sätter jag in mönstret: "/\r\n/, "<br />" blir texten hej:
h
e
j

Räcker det att ändra lite i regexp mönstret?

colioneMedlem sedan juni 20014 421 inlägg
#11
set r=new regexp

r.pattern="[\r\n]{1,}"
r.global=true
r.multiline=true

f="Hej"&vbcrlf&"jag heter"&vbcr&"bertil"&vblf&"nilsson"

m=r.replace(f,"<br>")
henkzMedlem sedan apr. 2002183 inlägg
#12

Tack!
Men det fungerar ändå inte. Blir inga radbrytningar.

Kan felet ligga här:

<script type="text/javascript">
var ShiftIn = 0;
</script>
<textarea id="msg" name="msg" rows="2" onkeyup="if (event.keyCode==16) ShiftIn = 0;" onKeyDown="if (event.keyCode==16) ShiftIn = 1;if((event.keyCode==13) && (ShiftIn == 0)) makeRequest('chatt_save.asp?chattid=<%=chattid%>&msg='+this.value+'&rnd='+Math.random());" style="overflow:auto;width:100%;height:40px;"></textarea>
colioneMedlem sedan juni 20014 421 inlägg
#13

Hmm, har du lust att skapa en sida som spottar ut den inskickade datan omslutet med pre-taggar som vi kan kontrollera på?

henkzMedlem sedan apr. 2002183 inlägg
#14

Det ger inte så mycket info det.

henkzMedlem sedan apr. 2002183 inlägg
#15

colione skrev:

Hmm, en tanke som slår mig är ju att det skulle kunna bero på att du skickar det som get-data utan att koda om det som en del av en URL.

Använd: encodeURIComponent(this.value) till urlen när du sparar chatten.

I övrigt tror jag det hade varit bättre om du skickar det hela som post-data istället för get. Du kan skicka mer infromation då.

Funkade klockrent!

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