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