Итак, возникла задача сохранять состояние отправленной формы. Первым делом определяемся с методом хранения данных - localStorage, а так же берем библиотеку jQuery.
(function($){ $('form#filter').on('submit', function(){ event.preventDefault(); localStorage.setItem('filterData',$(this).serilize()); }) $('#getFilterData').on('click',function(){ var s = $.unserialize(localStorage.getItem('filterData')); //get param=1¶m2=2 alert('param = '+s.param+' and param2 = '+s.param2); //get nammed element price%5Bl%5D=0&price%5Bu%5D=34500 alert('Low price '+s.price.l+' and upper is'+s.price.u); }); function parseValue(strVal) { return ( strVal.match(/^[0-9]+$/) ) ? parseInt(strVal) : (strVal == 'true') ? true : (strVal == 'false') ? false : strVal.replace(/[+]/g, " ") }
$.unserialize = function(serializedString){ var str = decodeURIComponent(serializedString); var pairs = str.split('&'); var obj = {}, p, idx, val, match, key, val; for (var i=0, n=pairs.length; i < n; i++) { p = pairs[i].split('='); idx = p[0]; if (idx.indexOf("[]") == (idx.length - 2)) { var ind = idx.substring(0, idx.length-2) if (obj[ind] === undefined) { obj[ind] = []; } obj[ind].push(p[1]); }else if (match = idx.match(/([^[]+)[([^]]+)]$/)) { key = match[1]; val = match[2]; if (!obj[key]) { obj[key] = {} } obj[key][val] = parseValue(p[1]) }else { obj[idx] = parseValue(p[1]) } } return obj; }; })
Комментарии
Открыть систему комментариев