form.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. var currentForms = new Array();
  2. var formsInPage = new Array();
  3. var formSubmit = false;
  4. var closePagePrompt = 'You have unsaved changes';
  5. function getCurrentForms() {
  6. if (document.getElementById && document.getElementsByTagName) {
  7. formsInPage = document.getElementsByTagName('form');
  8. for (var i=0; i<formsInPage.length; i++) {
  9. f = formsInPage[i];
  10. var tmpForm = new Array();
  11. for (var j=0; j<f.elements.length; j++) {
  12. tmpForm.push(getFormElementValue(f[j]));
  13. }
  14. currentForms.push(tmpForm);
  15. }
  16. }
  17. }
  18. function addFormsEvent() {
  19. if (formsInPage.length == 0) {
  20. return null;
  21. }
  22. for (var i=0; i<formsInPage.length; i++) {
  23. formsInPage[i].onsubmit = function() { formSubmit = true; };
  24. }
  25. }
  26. function compareForms() {
  27. if (currentForms.length == 0) {
  28. return null;
  29. }
  30. for (var i=0; i<formsInPage.length; i++) {
  31. form = formsInPage[i];
  32. for (var j=0; j<form.elements.length; j++) {
  33. if (currentForms[i][j] != getFormElementValue(form[j])) {
  34. return false;
  35. }
  36. }
  37. }
  38. return true;
  39. }
  40. function getFormElementValue(e) {
  41. if (e.type == 'radio') {
  42. return getFormRadioValue(e);
  43. } else if (e.type == 'checkbox') {
  44. return getFormCheckValue(e);
  45. } else {
  46. return e.value;
  47. }
  48. }
  49. function getFormCheckValue(e) {
  50. if (e.checked) {
  51. return e.value;
  52. }
  53. return null;
  54. }
  55. function getFormRadioValue(e) {
  56. for (var i=0; i <e.length; i++) {
  57. if (e[i].checked) {
  58. return e[i].value;
  59. } else {
  60. return null;
  61. }
  62. }
  63. }
  64. function confirmCloseForms(event_) {
  65. if (!event_ && window.event) {
  66. event_ = window.event;
  67. }
  68. if (!formSubmit) {
  69. if (!compareForms()) {
  70. event_.returnValue = closePagePrompt;
  71. return closePagePrompt;
  72. }
  73. }
  74. }