diff --git a/js/makegrid.js b/js/makegrid.js index e8f82b9acf..5651453f14 100644 --- a/js/makegrid.js +++ b/js/makegrid.js @@ -32,6 +32,7 @@ saveCellsAtOnce: false, // $cfg[saveCellsAtOnce] isCellEdited: false, // true if at least one cell has been edited saveCellWarning: '', // string, warning text when user want to leave a page with unsaved edited data + lastXHR : null, // last XHR object used in AJAX request // functions dragStartRsz: function(e, obj) { // start column resize @@ -510,6 +511,14 @@ g.saveOrPostEditedCell(); return; } + + // cancel any previous request + if (g.lastXHR != null) { + g.lastXHR.abort(); + g.lastXHR = null; + } + + // hide the cell editing area $(g.cEdit).hide(); $(g.cEdit).find('input[type=text]').blur(); g.isCellEditActive = false; @@ -655,6 +664,9 @@ //handle relations $editArea.addClass('edit_area_loading'); + // initialize the original data + $td.data('original_data', null); + /** * @var post_params Object containing parameters for the POST request */ @@ -670,8 +682,14 @@ 'relation_key_or_display_column' : relation_key_or_display_column } - $.post('sql.php', post_params, function(data) { + g.lastXHR = $.post('sql.php', post_params, function(data) { $editArea.removeClass('edit_area_loading'); + // save original_data + var value = $(data.dropdown).val(); + $td.data('original_data', value); + // update the text input field, in case where the "Relational display column" is checked + $(g.cEdit).find('input[type=text]').val(value); + $editArea.append(data.dropdown); $editArea.append('