Benutzer mit den meisten Antworten
Seite vor verlassen nach änderung prüfen

Frage
-
Hallo zusammen,
Problem: wenn user Inhalte z.B. textfelder ändern und die Seite verlassen möchten ohne die Änderung zu speichern,
möchte ich Sie daruf hinweisen, dass Sie die Änderung nicht gespeichert haben.
folgender JavaScript habe ich bei mir angepasst
http://www.d-mueller.de/blog/aenderungen-einer-form-ueberwachen/
nun habe ich problem mit dem Speichern-Button, jedes mal wenn der user speichern clickt, kommt die Meldung "wollen Sie die Seite Wirklic....."
ich möchte die meldung für buttons unterdrucken
ansatz:
$('form').bind('submit', function() {
window.onbeforeunload = function(e) {}
});
geht leider nicht!!
Beste Grüsse
Lubb
- Bearbeitet lubb Donnerstag, 15. März 2012 14:46
Antworten
-
Guten Morgen,
Die Komplete Lösung wäre:
<script type="text/javascript"> var ids = new Array('textbox', 'select-one', 'textarea' ); var values = new Array(); function populateArrays() { // assign the default values to the items in the values array for (var i = 0; i < ids.length; i++) { var elem = document.getElementById(ids[i]); if (elem) { if (elem.type == 'select-one') values[i] = elem.selectedIndex ; else if( elem.type == 'text' || elem.type == 'textarea') values[i] = elem.value; } } } var needToConfirm = true; window.onbeforeunload = confirmExit; function confirmExit() { if (needToConfirm) { populateArrays(); // check to see if any changes to the data entry fields have been made for (var i = 0; i < values.length; i++) { var elem = document.getElementById(ids[i]); if (elem) { if (elem.type == 'select-one') { if (checkDLLValue(elem)) return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; } if ((elem.type == 'text') && elem.defaultValue != values[i])//elem.defaultValue ) { // alert(elem.defaultValue + ' , ' + values[i]); return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; } else if ((elem.type == 'textarea') && elem.defaultValue != values[i])//elem.defaultValue ) { // alert(elem.defaultValue + ' , ' + values[i]); return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; } } } // no changes - return nothing } } function checkDLLValue(oSelect) { var def; for (var i=0; i<oSelect.options.length; ++i) //loop through select options if (oSelect.options[i].defaultSelected){ //this option's defaultSelected property is set to true (from HTML: selected="selected") def = oSelect[i].text; //or .value } var sel; sel = oSelect[oSelect.selectedIndex].text; if (sel != def) { alert (sel + ' : ' + def); return true; } } </script>
Beste Grüsse
Lubb
Alle Antworten
-
hallo Leute
habe den code geändert, so kann ich genau bestimmen, welche felder gepruft und welche nicht:
<script type="text/javascript"> var ids = new Array('ctl00_ContentPlaceHolderContent_X, 'ctl00_ContentPlaceHolderContent_Y'); // var ids = new Array('tbX', 'tbY'); var values = new Array('', ''); function populateArrays() { // assign the default values to the items in the values array for (var i = 0; i < ids.length; i++) { // var elem = document.getElementById(ids[i]); var elem = document.getElementById(ids[i]); if (elem) if (elem.type == 'checkbox' || elem.type == 'radio') values[i] = elem.checked; else values[i] = elem.value; } } var needToConfirm = true; window.onbeforeunload = confirmExit; function confirmExit() { if (needToConfirm) { populateArrays(); // check to see if any changes to the data entry fields have been made for (var i = 0; i < values.length; i++) { var id = ids[0]+'.ClientID'; var elem = document.getElementById(ids[i]); if (elem) if (elem.type == 'select-one') { for (var ii = 0; ii < elem.options.length; ii++) { if (elem.options[ii].selected != elem.options[ii].defaultSelected) return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; } } else if ((elem.type == 'text') && elem.value != elem.defaultValue ) return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; else if ((elem.type == 'textarea') && elem.value != elem.defaultValue ) return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; } // no changes - return nothing } } </script>
Problem wie kann ich per Javascript die Client ID der Controlls an hand der asp.net ID
anstatt: var elem = document.getElementById(ids[i]);
folgendes:
var ids = new Array('tbX', 'tbY');
var elem = document.getElementById(ids[i].ClinetID);
-
Guten Morgen,
Die Komplete Lösung wäre:
<script type="text/javascript"> var ids = new Array('textbox', 'select-one', 'textarea' ); var values = new Array(); function populateArrays() { // assign the default values to the items in the values array for (var i = 0; i < ids.length; i++) { var elem = document.getElementById(ids[i]); if (elem) { if (elem.type == 'select-one') values[i] = elem.selectedIndex ; else if( elem.type == 'text' || elem.type == 'textarea') values[i] = elem.value; } } } var needToConfirm = true; window.onbeforeunload = confirmExit; function confirmExit() { if (needToConfirm) { populateArrays(); // check to see if any changes to the data entry fields have been made for (var i = 0; i < values.length; i++) { var elem = document.getElementById(ids[i]); if (elem) { if (elem.type == 'select-one') { if (checkDLLValue(elem)) return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; } if ((elem.type == 'text') && elem.defaultValue != values[i])//elem.defaultValue ) { // alert(elem.defaultValue + ' , ' + values[i]); return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; } else if ((elem.type == 'textarea') && elem.defaultValue != values[i])//elem.defaultValue ) { // alert(elem.defaultValue + ' , ' + values[i]); return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?"; } } } // no changes - return nothing } } function checkDLLValue(oSelect) { var def; for (var i=0; i<oSelect.options.length; ++i) //loop through select options if (oSelect.options[i].defaultSelected){ //this option's defaultSelected property is set to true (from HTML: selected="selected") def = oSelect[i].text; //or .value } var sel; sel = oSelect[oSelect.selectedIndex].text; if (sel != def) { alert (sel + ' : ' + def); return true; } } </script>
Beste Grüsse
Lubb