ASP.NET AJAX ModalPopupExtender 具有OnCancelScript
和OnOkScript
属性,但它似乎没有OnShowScript
属性。我想指定每次显示弹出窗口时运行的javascript函数。
在过去的情况下,我将TargetControlID
设置为一个虚拟控件并提供我自己的控件,首先执行一些JS代码,然后使用JS方法显示弹出窗口。但在这种情况下,我正在显示客户端和服务器端代码的弹出窗口。
任何人都知道这样做的方法吗?
顺便说一句,我需要这个,因为我在模态中有一个文本框,我想制作一个TinyMCE编辑器。但是TinyMCE init脚本对隐形文本框不起作用,所以我必须找到一种在模式显示时运行它的方法答案 0 :(得分:28)
嗯...我非常确定有一个显示的事件为MPE ...这是我的头脑,但我认为你可以添加一个事件处理程序在page_load上显示的事件
function pageLoad()
{
var popup = $find('ModalPopupClientID');
popup.add_shown(SetFocus);
}
function SetFocus()
{
$get('TriggerClientId').focus();
}
我不确定这是否会帮助您从服务器端调用它
答案 1 :(得分:14)
这是在标记中执行此操作的简单方法:
<ajaxToolkit:ModalPopupExtender
ID="ModalPopupExtender2" runat="server"
TargetControlID="lnk_OpenGame"
PopupControlID="Panel1"
BehaviorID="SilverPracticeBehaviorID" >
<Animations>
<OnShown>
<ScriptAction Script="InitializeGame();" />
</OnShown>
</Animations>
</ajaxToolkit:ModalPopupExtender>
答案 2 :(得分:11)
您应该使用ModalPopupExtender的 BehaviorID 值mpeBID
。
function pageLoad() {
$find('mpeBID').add_shown(HideMediaPlayer);
}
function HideMediaPlayer() {
var divMovie = $get('<%=divMovie.ClientID%>');
divMovie.style.display = "none";
}
答案 3 :(得分:2)
如果您使用按钮或超链接或其他东西触发弹出窗口显示,您是否还可以为触发器的onClick事件添加一个额外的处理程序,该事件仍应触发模式弹出窗口并同时运行javascript?
答案 4 :(得分:2)
ModalPopupExtender修改您告诉它为“触发器”元素的按钮/超链接。我在弹出窗口显示之前添加触发器的onclick脚本。我希望在显示弹出窗口后触发脚本。
另外,还有我从服务器端显示模态的问题。
答案 5 :(得分:2)
如果用css隐藏它,TinyMCE会对隐形文本框起作用(display:none;) 如果你还使用了updatepanel,你可以在TargetControlID上为init TinyMCE创建一个“onclick”事件
答案 6 :(得分:2)
var launch = false;
function launchModal() {
launch = true;
}
function pageLoad() {
if (launch) {
var ModalPedimento = $find('ModalPopupExtender_Pedimento');
ModalPedimento.show();
ModalPedimento.add_shown(SetFocus);
}
}
function SetFocus() {
$get('TriggerClientId').focus();
}
答案 7 :(得分:2)
对于两种模态形式:
var launch = false;
var NameObject = '';
function launchModal(ModalPopupExtender) {
launch = true;
NameObject = ModalPopupExtender;
}
function pageLoad() {
if (launch) {
var ModalObject = $find(NameObject);
ModalObject.show();
ModalObject.add_shown(SetFocus);
}
}
function SetFocus() {
$get('TriggerClientId').focus();
}
服务器端:行为
protected void btnNuevo_Click(object sender, EventArgs e)
{
//Para recuperar el formulario modal desde el lado del sercidor
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", "<script>launchModal('" + ModalPopupExtender_Factura.ID.ToString() + "');</script>", false);
}