AddeladdeMedlem sedan jan. 20012 997 inlägg
Hej
Jag har en länk som ser ut på följande sätt.
<a onclick="return confirmDelete(...)" href="__dopostback('blbla','')"></a>
Sedan ser javascript koden ut så här:
function modalDialogShow(url,width,height){
if (window.showModalDialog) {
var returnValue = window.showModalDialog(url,"","dialogWidth:"+width+"px;dialogHeight:"+(height+42)+"px");
return returnValue;
}
else {
var left = screen.availWidth/2 - width/2;
var top = screen.availHeight/2 - height/2;
activeModalWin = window.open(url, "", "width="+width+"px,height="+height+",left="+left+",top="+top+",modal=yes");
}
}
function confirmDelete(confirmText, pageTitle, baseURL, eventTarget){
var returnValue= false;
returnValue = modalDialogShow(baseURL+'modalpageshow.aspx?page='+escape('confirmDelete.aspx?confirmText='+confirmText)+'&pageTitle='+escape(pageTitle),380,125)
if(returnValue){
return true
}
return false;
}
function deleteDo(){
return true;
}
Eftersom Firefox inte hanterar returnValue så i sidan som öppnas i popupfönstret kör du funktionen deleteDo()
Men det funkar inte eftersom firefox redan har fått return false efter som den kör igenom hela confirmDelete funktionen och inte väntar på att fönstret ska stängas först.
Hur löser jag detta? Jag måste få min funktion att returnera true till länken.
Peter SMedlem sedan dec. 20025 484 inlägg
I den översta funktionen returnerar du ett värde om showModalDialog stödjs. Detta stycke körs inte i FF varför else-satsen hoppas in i och där returneras ingenting. Varför inte lägga till return activeModalWin så att modalDialogShow()s returnvärde evalueras till sant?
AddeladdeMedlem sedan jan. 20012 997 inlägg
Problemet är då att den returnerar true direkt men jag vill ju att den ska returnera true om jag trycker på ja knappen i fönstret som öppnas:
Kod på fönstret som öppnas:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<script>
function submitForm(){
if(window.showModalDialog){
if(parent.window.opener)
parent.window.opener.deleteDo();
else
returnValue=true;
}else{
window.opener.deleteDo();
}
self.close();
}
</script>
</head>
<body class="confirmDeletePageBody" onLoad="document.del.Yes.focus();" oncontextmenu="return false" scroll="no">
<form action="" name="del" method="post" onSubmit="submitForm()" style="margin: 0px;">
<table width="350" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="55" rowspan="2" align="left" valign="top" >
</td>
<td height="60" align="left" valign="top">
Vill du radera?
<br>
</td>
</tr>
<tr>
<td colspan="2" width="200" align="center" valign="top"><input name="Yes" type="submit" class="ButtonW100" id="Yes" value="Ja">
<input name="No" type="button" class="ButtonW100" id="No" onClick="self.close()" value="Nej">
</td>
</tr>
</table>
</form>
</body>
</html>
Peter SMedlem sedan dec. 20025 484 inlägg
Då kan det vara enklare att göra så här
<a onclick="return confirmDelete(...,'{loc:location,href:this.href}')" href="__dopostback('blbla','')"></a> //a.href-värdet kan ställa till det
function confirmDelete(...,props)
{
if (window.showModalDialog){
showModalDialog('...',props,'...'); //du kanske vill använda window.open även här(?)
} else {
window.open(...);
}
return false;
}
/* popupfönstret */
<form onsubmit="return submitForm()"...
function submitForm()
{
if (window.showModalDialog){
window.dialogArguments.loc.href = window.dialogArguments.href;
window.close();
} else {
//ingen dialogArgs här, kanske fånga upp värdet i frågesträngen med unescape()
}
}
AddeladdeMedlem sedan jan. 20012 997 inlägg
problemet är att på ASP.NET sidor så är det bara ett formulär och det är flera olika formulärfunktioner i den. Den lösning som du redovisar ovan har jag använt mig av på traditionella asp-sidor. Men med postback i asp.net blir det svårare.
Peter SMedlem sedan dec. 20025 484 inlägg
Så resultatet av att klicka på
<a href="_postback(...)"></a>
blir inte detsamma som
<a name="lnk" href="_postback(...)"></a>
<script>location.href = document.links["lnk"].href;</script>
?
AddeladdeMedlem sedan jan. 20012 997 inlägg
sorry jag missförstod lösningen först. Så klart att det ska funka.
Såg onSubmit men det var ju på popupfönstret.
Tack!