diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index ec3175a..eb7dcf4 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -4,8 +4,9 @@ X-editable changelog
 
 Version 1.2.1 wip
 ----------------------------  
+[enh] 'hidden' event: added possible value of reason param - 'nochange'. Occurs when form is submitted but value was not changed (vitalets) 
 [enh] 'submit' method changed: error-callback's parameter simplified (vitalets) 
-[enh] 'submit' method changed: now when response 200 OK it does not set pk automatically, use success callback (vitalets) 
+[enh] 'submit' method changed: now when response 200 OK it does not set pk automatically (vitalets) 
 [enh] 'submit' method changed: removed dataType='json'. Use 'ajaxOptions' to specify dataType if needed (vitalets) 
 [enh] removed default ajax dataType='json'. Use 'ajaxOptions' to specify dataType if needed (vitalets) 
 [enh] select: do not show 'sourceError' in element during autotext execution (vitalets) 
diff --git a/src/containers/editable-container.js b/src/containers/editable-container.js
index 1094c46..84aa882 100644
--- a/src/containers/editable-container.js
+++ b/src/containers/editable-container.js
@@ -80,9 +80,8 @@ Applied as jQuery method.
             .editableform(this.formOptions)
             .on({
                 save: $.proxy(this.save, this),
-                cancel: $.proxy(function(){
-                   this.hide('cancel'); 
-                }, this),
+                cancel: $.proxy(function(){ this.hide('cancel'); }, this),
+                nochange: $.proxy(function(){ this.hide('nochange'); }, this),
                 show: $.proxy(this.setPosition, this), //re-position container every time form is shown (occurs each time after loading state)
                 rendering: $.proxy(this.setPosition, this), //this allows to place container correctly when loading shown
                 rendered: $.proxy(function(){
@@ -146,7 +145,7 @@ Applied as jQuery method.
         /**
         Hides container with form
         @method hide()
-        @param {string} reason Reason caused hiding. Can be <code>save|cancel|onblur|undefined (=manual)</code>
+        @param {string} reason Reason caused hiding. Can be <code>save|cancel|onblur|nochange|undefined (=manual)</code>
         **/         
         hide: function(reason) {  
             if(!this.tip() || !this.tip().is(':visible') || !this.$element.hasClass('editable-open')) {
@@ -159,7 +158,7 @@ Applied as jQuery method.
 
             @event hidden 
             @param {object} event event object
-            @param {string} reason Reason caused hiding. Can be <code>save|cancel|onblur|undefined (=manual)</code>
+            @param {string} reason Reason caused hiding. Can be <code>save|cancel|onblur|nochange|undefined (=manual)</code>
             @example
             $('#username').on('hidden', function(e, reason) {
                 if(reason === 'save' || reason === 'cancel') {
diff --git a/src/editable-form/editable-form.js b/src/editable-form/editable-form.js
index a8d5b35..e0a9a6e 100644
--- a/src/editable-form/editable-form.js
+++ b/src/editable-form/editable-form.js
@@ -179,11 +179,16 @@ Editableform is linked with one of input types, e.g. 'text', 'select' etc.
                 return;
             } 
             
-            //if value not changed --> cancel
+            //if value not changed --> trigger 'nochange' event and return
             /*jslint eqeq: true*/
             if (!this.options.savenochange && this.input.value2str(newValue) == this.input.value2str(this.value)) {
             /*jslint eqeq: false*/                
-                this.cancel();
+                /**        
+                Fired when value not changed but form is submitted. Requires savenochange = false.
+                @event nochange 
+                @param {Object} event event object
+                **/                    
+                this.$div.triggerHandler('nochange');            
                 return;
             } 
 
diff --git a/test/unit/api.js b/test/unit/api.js
index de1146d..1ec92f2 100644
--- a/test/unit/api.js
+++ b/test/unit/api.js
@@ -79,8 +79,8 @@ $(function () {
         e.editable();
     });      
   
-     asyncTest("events: shown / hidden (reason: cancel, onblur, manual)", function () {
-        expect(11);
+     asyncTest("events: shown / hidden (reason: cancel, onblur, nochange, manual)", function () {
+        expect(15);
         var val = '1', test_reason, 
             e = $('<a href="#" data-pk="1" data-type="select" data-url="post.php" data-name="text" data-value="'+val+'"></a>').appendTo(fx);
         
@@ -113,6 +113,13 @@ $(function () {
              e.parent().click();
              ok(!p.is(':visible'), 'popover closed');
              
+             test_reason = 'nochange'            
+             e.click();
+             p = tip(e);
+             ok(p.is(':visible'), 'popover shown');
+             p.find('form').submit();  //submit value without changes
+             ok(!p.is(':visible'), 'popover closed');             
+             
              test_reason = 'manual'            
              e.click();
              p = tip(e);