webForumDet fria alternativet

Upptäcka att formulär börjat ändras, jQuery

JavaScript

8 svar · 664 visningar · startad av Gildebrand

Medlem sedan juni 2009920 inlägg
Frågan#1

Hejsan!

På en del hemsidor, såsom gmail, finns det en funktion som ser till så att man inte lämnar osparad information utan en varning. Detta är ju ganska trevligt, och tänkte börja använda mig av detta själv. Har googlat lite, och hittade DirtyFields och DirtyForms (finns dock ganska lite dokumentation till båda). Har provat dessa är inte nöjd med hur de fungerar (lite småbuggiga).

jQuery har ju funktionen .change(), denne fungerar precis som onchange, men eventet "körs" (raises) inte förräns man har lämnat formuläret. Jag vill att detta ska ske när man börjar ändra i formuläret. Går det?

Medlem sedan juni 20019 519 inlägg
#2

.keypress() => http://api.jquery.com/keypress/ och kontrollera och se om standard värdet är annorlunda, om det är det så är det bara att köra vidare, annars ge varning?

Medlem sedan juni 2009920 inlägg
#3

Jo man kan ju göra så...
Känns bara lite lite "komplicerat". Iofs så ska man ju bara kolla när det är fokus på ett formulär.

Medlem sedan juni 20019 519 inlägg
#4

vad är "osparad information" för något?

Är det så att du vill kolla om något av fälten har ändrats men inte sparats? loopar igenom alla dina input och spara ner den data som fanns vid loaden, och om man lämnar sidan och datan har förändrats så kan du triggar en alert som varnar? är det det du är ute efter?

Medlem sedan juni 2009920 inlägg
#5

Formulär med ändrade data. Känns onödigt att behöva spara ner ursprungsvärdena, då fastän man ändrat i textboxen, så ligger value i HTML-koden!?

Jo precis det jag är ute efter, dock vill jag kunna markera ett ändrat formulär också så att man vet vart man har ändrat.

Medlem sedan juni 20019 519 inlägg
#6

Gildebrand skrev:

Formulär med ändrade data. Känns onödigt att behöva spara ner ursprungsvärdena, då fastän man ändrat i textboxen, så ligger value i HTML-koden!?

Det kommer du aldrig kunna lösa med javascript då javascript inte spara något.

Jo precis det jag är ute efter, dock vill jag kunna markera ett ändrat formulär också så att man vet vart man har ändrat.

Loopar igenom alla dina input, spara ner default värdet, vid keypress/change/blur så kolla du på om fälten har fått något nytt värde eller är samma som din sparade text i JS, om det är ändrat, gör din markering(sätt en css-klass eller meddelande?).

Medlem sedan juni 2009920 inlägg
#7

Men om jag hoppar biten att jämföra med ursprungsvärdet, och bara kollar om man ändrat i formuläret. Jag tänker att jag kollar om fokus ligger i en textbox, och om det är så, så lyssnar jag efter keypress.

EDIT: Har fått till det med att bara upptäcka ändringar. Dock vet jag ej hur jag ska göra med kontroller som checkboxar och radio-buttons, men det kanske löser sig bara jag får tänka. Funkade bra med keypress iallafall.

Medlem sedan juni 20019 519 inlägg
#8

javascript har defaultValue du kan köra mot, men om det är så att du bara vill skicka med innehåll som har ändrats i formuläret så bli det svårt.

gjorde ett exempel: http://voigt.se/sandbox/inputchanged/

Medlem sedan juni 2009920 inlägg
#9

Skitsnyggt! Tack, nu vet jag hur jag ska göra :)

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)