Guten Moregn,
Die lösung kann sehr einfach sein!
die Dropdownlist kann mit der option onchange="needToConfirm = false;"
so muss ich nicht mehr prüfen, on die Dropdownlist die Postback ausgelöst hat.
<asp:DropDownList ID="ddlKostenstelle" runat="server" OnSelectedIndexChanged="KostenstelleChanged" AutoPostBack="true" onchange="needToConfirm = false;">
</asp:DropDownList>
<script type="text/javascript">
var ids = new Array('ctl00_ContentPlaceHolderContent_tbSerienNr', 'ctl00_ContentPlaceHolderContent_tbRechnungsNr' );
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.options.selected;
else if( elem.type == 'text' || elem.type == 'textarea')
values[i] = elem.value;
}
}
}
var needToConfirm = true;
window.onbeforeunload = confirmExit
function confirmExit()
{
var test = window.form1.target;
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')
{
for (var ii = 0; ii < elem.options.length; ii++)
{
if (elem.options[ii].selected != values[i])//elem.options[ii].defaultSelected
if (elem.options[ii].value!=-1)
return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?";
}
}
else if ((elem.type == 'text') && elem.value != values[i])//elem.defaultValue )
return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?";
else if ((elem.type == 'textarea') && elem.value != values[i])//elem.defaultValue )
return "Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?";
}
}
// no changes - return nothing
}
}
</script>
warum so schwer wenn es einfach sein kann!
Vielen Dank für eure hilfe
Beste Grüsse
Lubb