Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Save before exit

skahlertSep 12 2010 — edited Dec 10 2010
Dear apex devs,

I integrated Denes' example in my app to warn users to save changes before exiting the modified page.

I modified the button template to match my own requirements and am calling a custom jquery function in the doSave function of Denes' example.

The bug or problem I encountered is that the script even alerts if no changes have been made. I am using Apex v.3.1 and was wondering if anybody here has a clue as to why changes are detected although none have been made. Could it be due to the binding of page items via page processes?

The script is as follows:
<script type="text/javascript">

function isFormChanged() {
 var rtnVal = false; 
 var frm = document.wwv_flow;
 var ele = frm.elements;

 for ( i=0; i < ele.length; i++ ) {
  if ( ele.type.length > 0 ) {
if ( isElementChanged( ele, i ) ) {
rtnVal = true;
break;
}
}
}
return rtnVal;
}

function isElementChanged( ele, i ) {
var isEleChanged = false;

switch ( ele[i].type ) {

case "text" :
if ( ele[i].value != ele[i].defaultValue ) return true;
break;

case "textarea" :
if ( ele[i].value != ele[i].defaultValue ) return true;
break;

case "radio" :
val = "";
if ( ele[i].checked != ele[i].defaultChecked ) return true;
break;

case "select-one" :
if (ele[i].id>99 ) return false;
for ( var x =0 ; x <ele[i].length; x++ ) {
if ( ele[i].options[ x ].selected
!= ele[i].options[ x ].defaultSelected ) return true;
}
break;

case "select-multiple" :
if (ele[i].id>99 ) return false;
for ( var x =0 ; x <ele[i].length; x++ ) {
if ( ele[i].options[ x ].selected !=
ele[i].options[ x ].defaultSelected ) return true;
}
break;

case "checkbox" :
if ( ele[i].checked != ele[i].defaultChecked ) return true;

default:
return false;
break;
}
}

var g_saving = false;
var g_errmsg="Attention! Do you want to leave without saving?";

function WarnSave()
{
var formChanged=isFormChanged();
if (!g_saving && formChanged) return g_errmsg;
}

function doSave()
{
g_saving=true;
warning2();void 0;

}
</script>
Many thanks for any ideas that you might have!

Brgds,

Seb

Edited by: skahlert on 12.09.2010 15:03                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
This post has been answered by jariola on Sep 12 2010
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 7 2011
Added on Sep 12 2010
8 comments
2,037 views