Bonjour à tous,
J'ai un petit soucis que je n'arrive pas à résoudre.
Voici mon code javascript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| function doPost(command, txt)
{
document.title = txt;
document.editform.bv.disabled = true;
document.editform.bs.disabled = true;
document.editform.cmd.value = command;
document.editform.submit();
}
function closeForm()
{
if(document.editform.cmd.value != 'Save' && document.editform.cmd.value != 'ValidateForm')
{
var confirm2 = confirm("Some fields have been modified. \n Do you want to save the form before closing it?");
if(confirm2)
{
doPost("Save", "Please wait, your form is being saved");
}
else
{
window.close();
}
}
}
var fieldsOnLoad;
var fieldsOnUnload;
function listFieldsOnLoad()
{
var formLength = document.editform.elements.length;
fieldsOnLoad = new Array(formLength);
for(var i = 0; i< formLength; i++)
{
fieldsOnLoad[i] = new Array(2);
}
for(var i = 0; i< formLength; i++)
{
fieldsOnLoad[i][0] = document.editform.elements[i].name;
fieldsOnLoad[i][1] = document.editform.elements[i].value;
}
}
function listFieldsOnUnload()
{
var formLength = document.editform.elements.length;
fieldsOnUnload = new Array(formLength);
for(var i = 0; i< formLength; i++)
{
fieldsOnUnload[i] = new Array(2);
}
for(var i = 0; i< formLength; i++)
{
fieldsOnUnload[i][0] = document.editform.elements[i].name;
fieldsOnUnload[i][1] = document.editform.elements[i].value;
}
fieldChanged();
return true;
}
function fieldChanged()
{
var valueChanged = false;
checkFields :
for(var i = 0 ; i< fieldsOnLoad.length ; i++)
{
for(var j = 0 ; j< fieldsOnUnload.length ; j++)
{
if(fieldsOnLoad[i][0] == fieldsOnUnload[j][0])
{
if(fieldsOnLoad[i][1] != fieldsOnUnload[j][1])
{
//alert('value changed');
valueChanged = true;
break checkFields;
}
}
}
}
if(valueChanged)
{
closeForm();
}
} |
Et voici comment j'appelle mes fonctions dans ma page html
<BODY onLoad="listFieldsOnLoad()" onBeforeUnload="listFieldsOnUnload()">
Le problème est qu'il repasse une 2è fois dans la fonction closeForm(). Et ja n'arrive pas à comprendre pourquoi.
Je suppose que j'ai mon nez dessus, mais malgré tout je ne trouve pas.
Si quelqu'un pouvait jeter un coup d'oeil et voir ce qui ne va pas.
D'avance merci pour vos réponses.
Partager