Сведения о вопросе

Oleksandrop

16:03, 1st July, 2020

Теги

Как указать javascript для запуска при отображении ModalPopupExtender

Просмотров: 582   Ответов: 8

У ASP.NET AJAX ModalPopupExtender есть свойства OnCancelScript и OnOkScript , но у него, похоже, нет свойства OnShowScript . Я бы хотел указать функцию javascript для запуска при каждом появлении всплывающего окна.

В прошлых ситуациях я устанавливал TargetControlID на фиктивный элемент управления и предоставлял свой собственный элемент управления, который сначала выполняет некоторый код JS, а затем использует методы JS для отображения всплывающего окна. Но в этом случае я показываю всплывающее окно как из клиентского, так и из серверного кода.

Кто-нибудь знает способ сделать это?

BTW, мне это было нужно, потому что у меня есть textbox в модале, который я хочу сделать редактором TinyMCE. Но сценарий TinyMCE init не работает с невидимыми текстовыми полями, поэтому мне пришлось найти способ запустить его в то время, когда модальный был показан



  Сведения об ответе

PROGA

18:03, 1st July, 2020

хммм... Я почти уверен , что есть показанное событие для MPE... это не очень хорошо, но я думаю, что вы можете добавить обработчик событий к показанному событию на странице page_load

function pageLoad()
{
    var popup = $find('ModalPopupClientID');
    popup.add_shown(SetFocus);
}

function SetFocus()
{
    $get('TriggerClientId').focus();
}

я не уверен Тхо если это поможет вам с вызовом его со стороны сервера Тхо


  Сведения об ответе

9090

18:03, 1st July, 2020

Вот простой способ сделать это в markup:

<ajaxToolkit:ModalPopupExtender 
                ID="ModalPopupExtender2" runat="server" 
                TargetControlID="lnk_OpenGame" 
                PopupControlID="Panel1" 
                BehaviorID="SilverPracticeBehaviorID"  >
            <Animations>
                <OnShown>
                     <ScriptAction Script="InitializeGame();" />  
                </OnShown>
            </Animations>                
</ajaxToolkit:ModalPopupExtender>


  Сведения об ответе

ЯЯ__4

18:03, 1st July, 2020

Вы должны использовать значение BehaviorID mpeBID вашего ModalPopupExtender.

function pageLoad() {
    $find('mpeBID').add_shown(HideMediaPlayer);
}

function HideMediaPlayer() {
    var divMovie = $get('<%=divMovie.ClientID%>');
    divMovie.style.display = "none";
}


  Сведения об ответе

PAGE

18:03, 1st July, 2020

TinyMCE работайте над невидимым textbox, если вы спрячете его с помощью css (display:none;) Вы создаете событие "onclick" на TargetControlID, для init TinyMCE, если вы также используете updatepanel


  Сведения об ответе

darknet

18:03, 1st July, 2020

Если вы используете кнопку или гиперссылку или что-то еще, чтобы вызвать всплывающее окно, чтобы показать, не могли бы вы также добавить дополнительный обработчик к событию onClick триггера, который все еще должен запускать модальное всплывающее окно и запускать javascript одновременно?


  Сведения об ответе

nYU

18:03, 1st July, 2020

ModalPopupExtender изменяет кнопку / гиперссылку, которую вы называете элементом "trigger". Скрипт onclick я добавляю триггеры перед тем, как появится всплывающее окно. Я хочу, чтобы скрипт сработал после того, как появится всплывающее окно.

Кроме того, все еще оставляет меня с проблемой, когда я показываю модал со стороны сервера.


  Сведения об ответе

piter

18:03, 1st July, 2020

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();
}


  Сведения об ответе

repe

18:03, 1st July, 2020

Для двух модальных форм:

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);
}


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться