From 0c2ab559d9586fdc813c2491d165920b6989e2db Mon Sep 17 00:00:00 2001 From: noRerih Date: Tue, 8 Nov 2011 08:44:28 +0300 Subject: [PATCH] storing prefixes fix, global var fix --- sisyphus.js | 4 ++-- sisyphus.min.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sisyphus.js b/sisyphus.js index a4a14d6..6f7a61b 100644 --- a/sisyphus.js +++ b/sisyphus.js @@ -93,7 +93,7 @@ var Sisyphus =(function() { var restored = false; var targetFormId = protectedFields.parents( "form" ).attr( "id" ); protectedFields.each( function() { - field = $(this); + var field = $(this); var prefix = self.href + targetFormId + field.attr( "name" ) + self.options.customKeyPrefix; var resque = localStorage.getItem( prefix ); if (resque) { @@ -230,7 +230,7 @@ var Sisyphus =(function() { protectedFields.each( function() { var elem = $( this ); if ( elem.is( ":text" ) || elem.is( "textarea" ) ) { - var prefix = self.href + elem.parents( "form" ).attr( "id" ) + field.attr( "name" ) + self.options.customKeyPrefix; + var prefix = self.href + elem.parents( "form" ).attr( "id" ) + elem.attr( "name" ) + self.options.customKeyPrefix; try { localStorage.setItem( prefix, elem.val() ); } catch (e) { diff --git a/sisyphus.min.js b/sisyphus.min.js index 8a271d2..561dcf9 100644 --- a/sisyphus.min.js +++ b/sisyphus.min.js @@ -1 +1 @@ -$.sisyphus=function(){return Sisyphus.getInstance()},$.fn.sisyphus=function(a){var b=Sisyphus.getInstance();b.setOptions(a),b.protect(this)};var Sisyphus=function(){function b(){return{setOptions:function(a){var b={excludeFields:null,customKeyPrefix:"",timeout:0,onSaveCallback:function(){},onRestoreCallback:function(){},onReleaseDataCallback:function(){}};this.options=$.extend(b,a)},protect:function(a){if(!this.isLocalStorageAvailable())return!1;this.href=location.hostname+location.pathname+location.search;var b=this;return a.each(function(){var a=$(this),c=a.find(":input").not(":submit").not(":reset").not(":button");b.bindSaveAndRestoreData(c),b.bindReleaseDataOnSubmitOrReset(c)}),!0},isLocalStorageAvailable:function(){try{return localStorage.getItem}catch(a){return!1}},bindSaveAndRestoreData:function(a){var b=this,c=!1,d=a.parents("form").attr("id");a.each(function(){field=$(this);var a=b.href+d+field.attr("name")+b.options.customKeyPrefix,e=localStorage.getItem(a);e&&(b.restoreData(field,e),c=!0),field.is(":text")||field.is("textarea")?b.options.timeout||b.bindSaveDataImmediately(field,a):b.bindSaveDataOnChange(field,a)}),b.options.timeout&&b.bindSaveDataByTimeout(a),c&&$.isFunction(b.options.onRestoreCallback)&&b.options.onRestoreCallback.call()},restoreData:function(a,b){a.is(":checkbox")&&b!==!1&&a.attr("name").indexOf("[")===-1?a.attr("checked","checked"):a.is(":radio")?a.val()===b&&a.attr("checked","checked"):a.attr("name").indexOf("[")===-1?a.val(b):(b=b.split(","),a.val(b))},bindSaveDataImmediately:function(a,b){var c=this;$.browser.msie==null?a.get(0).oninput=function(){c.saveToLocalStorage(b,a.val())}:a.get(0).onpropertychange=function(){c.saveToLocalStorage(b,a.val())}},saveToLocalStorage:function(a,b){try{localStorage.setItem(a,b+"")}catch(c){}b!==""&&$.isFunction(this.options.onSaveCallback)&&this.options.onSaveCallback.call()},bindSaveDataOnChange:function(a,b){var c=this;a.change(function(){var d=a.val();a.is(":checkbox")&&(a.attr("name").indexOf("[")!=-1?(d=[],$("[name='"+a.attr("name")+"']:checked").each(function(){d.push($(this).val())})):d=a.is(":checked")),a.is(":radio")&&(d=a.val()),c.saveToLocalStorage(b,d)})},bindSaveDataByTimeout:function(a){var b=this;setTimeout(function(a){function c(){a.each(function(){var a=$(this);if(a.is(":text")||a.is("textarea")){var c=b.href+a.parents("form").attr("id")+field.attr("name")+b.options.customKeyPrefix;try{localStorage.setItem(c,a.val())}catch(d){}}}),$.isFunction(b.options.onSaveCallback)&&b.options.onSaveCallback.call(),setTimeout(c,b.options.timeout*1e3)}return c}(a),b.options.timeout*1e3)},bindReleaseDataOnSubmitOrReset:function(a){var b=this;a.parents("form").bind("submit reset",function(){b.releaseData(a)})},releaseData:function(a){var b=!1,c=this,d=a.parents("form").attr("id");a.each(function(){field=$(this);var a=c.href+d+field.attr("name")+c.options.customKeyPrefix;localStorage.removeItem(a),b=!0}),b&&$.isFunction(c.options.onReleaseDataCallback)&&c.options.onReleaseDataCallback.call()}}}var a;return{getInstance:function(){return a||(a=b()),a}}}() \ No newline at end of file +$.sisyphus=function(){return Sisyphus.getInstance()},$.fn.sisyphus=function(a){var b=Sisyphus.getInstance();b.setOptions(a),b.protect(this)};var Sisyphus=function(){function b(){return{setOptions:function(a){var b={excludeFields:null,customKeyPrefix:"",timeout:0,onSaveCallback:function(){},onRestoreCallback:function(){},onReleaseDataCallback:function(){}};this.options=$.extend(b,a)},protect:function(a){if(!this.isLocalStorageAvailable())return!1;this.href=location.hostname+location.pathname+location.search;var b=this;return a.each(function(){var a=$(this),c=a.find(":input").not(":submit").not(":reset").not(":button");b.bindSaveAndRestoreData(c),b.bindReleaseDataOnSubmitOrReset(c)}),!0},isLocalStorageAvailable:function(){try{return localStorage.getItem}catch(a){return!1}},bindSaveAndRestoreData:function(a){var b=this,c=!1,d=a.parents("form").attr("id");a.each(function(){var a=$(this),e=b.href+d+a.attr("name")+b.options.customKeyPrefix,f=localStorage.getItem(e);f&&(b.restoreData(a,f),c=!0),a.is(":text")||a.is("textarea")?b.options.timeout||b.bindSaveDataImmediately(a,e):b.bindSaveDataOnChange(a,e)}),b.options.timeout&&b.bindSaveDataByTimeout(a),c&&$.isFunction(b.options.onRestoreCallback)&&b.options.onRestoreCallback.call()},restoreData:function(a,b){a.is(":checkbox")&&b!==!1&&a.attr("name").indexOf("[")===-1?a.attr("checked","checked"):a.is(":radio")?a.val()===b&&a.attr("checked","checked"):a.attr("name").indexOf("[")===-1?a.val(b):(b=b.split(","),a.val(b))},bindSaveDataImmediately:function(a,b){var c=this;$.browser.msie==null?a.get(0).oninput=function(){c.saveToLocalStorage(b,a.val())}:a.get(0).onpropertychange=function(){c.saveToLocalStorage(b,a.val())}},saveToLocalStorage:function(a,b){try{localStorage.setItem(a,b+"")}catch(c){}b!==""&&$.isFunction(this.options.onSaveCallback)&&this.options.onSaveCallback.call()},bindSaveDataOnChange:function(a,b){var c=this;a.change(function(){var d=a.val();a.is(":checkbox")&&(a.attr("name").indexOf("[")!=-1?(d=[],$("[name='"+a.attr("name")+"']:checked").each(function(){d.push($(this).val())})):d=a.is(":checked")),a.is(":radio")&&(d=a.val()),c.saveToLocalStorage(b,d)})},bindSaveDataByTimeout:function(a){var b=this;setTimeout(function(a){function c(){a.each(function(){var a=$(this);if(a.is(":text")||a.is("textarea")){var c=b.href+a.parents("form").attr("id")+a.attr("name")+b.options.customKeyPrefix;try{localStorage.setItem(c,a.val())}catch(d){}}}),$.isFunction(b.options.onSaveCallback)&&b.options.onSaveCallback.call(),setTimeout(c,b.options.timeout*1e3)}return c}(a),b.options.timeout*1e3)},bindReleaseDataOnSubmitOrReset:function(a){var b=this;a.parents("form").bind("submit reset",function(){b.releaseData(a)})},releaseData:function(a){var b=!1,c=this,d=a.parents("form").attr("id");a.each(function(){field=$(this);var a=c.href+d+field.attr("name")+c.options.customKeyPrefix;localStorage.removeItem(a),b=!0}),b&&$.isFunction(c.options.onReleaseDataCallback)&&c.options.onReleaseDataCallback.call()}}}var a;return{getInstance:function(){return a||(a=b()),a}}}() \ No newline at end of file