Как указать javascript для запуска, когда отображается ModalPopupExtender
ASP.NET AJAX ModalPopupExtender имеет свойства OnCancelScript и OnOkScript, но у него нет свойства OnShowScript. Я хотел бы указать функцию javascript для запуска каждый раз, когда отображается всплывающее окно.
В прошлых ситуациях я устанавливаю TargetControlID в фиктивный элемент управления и предоставляю свой собственный элемент управления, который сначала выполняет некоторый JS-код, а затем использует JS-методы для отображения всплывающего окна. Но в этом случае я показываю всплывающее окно как с клиентского, так и с серверного кода.
Кто-нибудь знает, как это сделать?
Кстати, мне это нужно, потому что у меня есть текстовое поле в модальном модуле, которое я хочу сделать редактором TinyMCE. Но TinyMCE init script не работает с невидимыми текстовыми полями, поэтому мне пришлось найти способ запустить его во время показа модага
Ответы
Ответ 1
hmmm... Я почти уверен, что там показанное событие для MPE... это не в порядке, но я думаю, вы можете добавить обработчик события к показанному событию на странице_load
function pageLoad()
{
var popup = $find('ModalPopupClientID');
popup.add_shown(SetFocus);
}
function SetFocus()
{
$get('TriggerClientId').focus();
}
Я не уверен, если это поможет вам позвонить ему со стороны сервера.
Ответ 2
Вы должны использовать значение BehaviorID ( "mpeBID" ) вашего ModalPopupExtender.
function pageLoad() {
$find('mpeBID').add_shown(HideMediaPlayer);
}
function HideMediaPlayer() {
var divMovie = $get('<%=divMovie.ClientID%>');
divMovie.style.display = "none";
}
Ответ 3
Вот простой способ сделать это в разметке:
<ajaxToolkit:ModalPopupExtender
ID="ModalPopupExtender2" runat="server"
TargetControlID="lnk_OpenGame"
PopupControlID="Panel1"
BehaviorID="SilverPracticeBehaviorID" >
<Animations>
<OnShown>
<ScriptAction Script="InitializeGame();" />
</OnShown>
</Animations>
</ajaxToolkit:ModalPopupExtender>
Ответ 4
Если вы используете кнопку или гиперссылку или что-то, что может вызвать всплывающее окно, не могли бы вы добавить дополнительный обработчик события onClick триггера, который должен по-прежнему запускать модальное всплывающее окно и запускать javascript одновременно?
Ответ 5
ModalPopupExtender изменяет кнопку/гиперссылку, которую вы указываете ей как элемент "триггер". Onclick script Я добавляю триггеры перед отображением всплывающего окна. Я хочу, чтобы script запускался после всплывающего окна.
Кроме того, все еще остается проблема с тем, когда я показываю модальную версию со стороны сервера.
Ответ 6
TinyMCE работает над невидимым текстовым полем, если вы скрываете его с помощью css (display: none;)
Вы делаете событие onclick на TargetControlID для init TinyMCE, если вы используете также панель обновления
Ответ 7
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();
}
Ответ 8
Для двух модальных форм:
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();
}
Серверная сторона: behand
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);
}