Referencing https://datatables.net/forums/discussion/32883, I tried this implementation. I see (at least on Chrome) that if I use ESC, the popup is displayed twice, but Cancel does indeed bring user back to form to continue editing. If I close the form using the X in the upper right, however, the form closes whether I click OK or Cancel.
Is there something I'm doing wrong? I can set up test area for you again if needed.
In case there is some conflict specific to my processing, my full event handler setup is
// this must be done after datatables() is called in datatables.js
var openVals;
function afterdatatables(){
editor.on( 'uploadXhrSuccess', function ( e, fieldName, json ) {
console.log ('elev = ' + json.elev + ' distance = ' + json.distance);
editor.field('elev').set(json.elev);
editor.field('distance').set(json.distance);
editor.field('active').set(json.active);
editor.field('location').set(json.location);
} );
editor.on('initCreate', function() {
editor.set('active', 1)
editor.field('active').hide()
});
editor.on('initEdit', function() {
var fileid = editor.get('fileid');
editor.set('turns', 'Loading...')
editor.field('active').show()
$.ajax({
// rr_turns_url_prefix comes from runningroute-*-config.js
url: rr_turns_url_prefix + '/admin/' + fileid + '/turns',
success : function(data) {
editor.set('turns', data.turns)
},
error : function(jqXHR, textStatus, errorThrown) {
editor.set('turns', 'ERROR: could not retrieve turn data\n'
+ ' ' + errorThrown)
},
});
});
// confirm before closing window for unsaved changes
// from https://datatables.net/forums/discussion/32883
editor
.on( 'open', function () {
// Store the values of the fields on open
openVals = JSON.stringify( editor.get() );
} )
.on( 'preClose', function ( e ) {
// On close, check if the values have changed and ask for closing confirmation if they have
if ( openVals !== JSON.stringify( editor.get() ) ) {
return confirm( 'You have unsaved changes. Are you sure you want to exit?' );
}
} )
.on( 'preBlur', function ( e ) {
// On close, check if the values have changed and ask for closing confirmation if they have
if ( openVals !== JSON.stringify( editor.get() ) ) {
return confirm( 'You have unsaved changes. Are you sure you want to exit?' );
}
} );
};