Mam raczej skomplikowaną formę z wieloma "krokami" w niej wypełnionymi przez użytkownika. Kilka kroków (myśleć o nich jako segmenty formie) mają domyślne opcje, ale na kliknięcie „wprowadzić wartości niestandardowe” wyświetlają się do niego ukryty zbiór pól, które użytkownik może wprowadzić informacje w. Oto przykładUżywanie jQuery do przechowywania stanu skomplikowanej formy
<div id="#s1_normal">
<input type="radio" name="mode" value="a"> Mode A
<input type="radio" name="mode" value="b"> Mode B
Choose one of the above for applying average coefficient
values of "a" or "b" to 100% of your product or
<a href="#" onclick="toggleCustom('s1');">enter custom values</a>
</div>
<div id="#s1_custom">
%a: <input type="text" name="perc_a"> coeff. a <input type="text" name="coeff_a">
%b: <input type="text" name="perc_b"> coeff. b <input type="text" name="coeff_b">
Enter custom values above or
<a href="#" onclick="toggleCustom('s1');">choose average values</a>
Istnieje kilka takich segmentów, na przykład # s1 .. # s7. Oto moje zadanie. Chcę umożliwić użytkownikowi zapisanie stanu formularza. Tak więc, gdy użytkownik wypełni cały formularz, wybierając średnie wartości domyślne dla niektórych segmentów i wprowadzając niestandardowe wartości dla innych, użytkownik może kliknąć przycisk i zachować cały stan do późniejszego rozmrożenia. Myślę, że jeśli mogę zapisać stan w obiekcie, który można serializować, mogę zapisać go w tabeli db lub inne trwałe pamięci.
Użytkownik może wrócić w późniejszym czasie i ponownie skonstruować całą poprzednią sesję.
Jak to zrobić? Istnieje wtyczka getAttributes http://plugins.jquery.com/project/getAttributes i istnieje metoda serializacji jQuery, ale nie mogę rozpocząć mojego życia. Proszę, popchnij mnie we właściwym kierunku.
Dzięki za sugestię. Jak zauważyłem w moim pytaniu, jestem świadomy metody serializacji, jednak wydaje mi się, że jest to tylko część rozwiązania. Aby przywrócić formularz, muszę odczytać przechowywane serializowane dane, a następnie zrekonstruować formularz z powrotem do stanu, w tym wszystkie jego własne wpisy. To znaczy, że jeśli ukryty segment był niewidoczny, aby wprowadzić wartości niestandardowe, chcę to plecy. Jak mam to zrobić? – punkish
@punkish: Nie jestem świadomy jakiejś metody 'deserialize()' w rdzeniu jQuery. Musisz więc zakodować własny niestandardowy analizator składni lub poszukać wtyczki. – jAndy
@punkish Oto moja [wtyczka formstate] (http://jsfiddle.net/mindplay/yLPY3/) - alternatywa dla serialize() i brakująca unserialize(), która działa z obiektami, a nie z łańcuchami znaków; Chciałem lekką wtyczkę, która zajmuje się tylko formą-stanem, a nie reprezentacjami ciągów lub metodami przechowywania. Obsługuje radia, pola wyboru itp. W rozsądny sposób. –