Как найти ModalPopupExtender в JavaScript? - PullRequest
1 голос
/ 24 января 2012

Мне нужно написать функцию Javascript, которая запускается с главной страницы, чтобы найти ModalPopup на странице содержимого и закрыть ее.Следующий код работает, но не то, что я хочу.Мне нужно использовать что-то вроде mpeEditUser.ClientID, но я получил ошибку.Кроме того, было бы неплохо, если бы я мог найти ModalPopup, не зная его id, по его типу (ModalPopupExtender).Любое предложение?

 function CloseModalPopup() {
        var mpu = $find('ctl00_ContentPlaceHolder1_mpeEditUser');
        mpu.hide();

    }

Вот мое решение: (Если вы видите какую-либо проблему, пожалуйста, дайте мне знать. Спасибо) Я получаю идентификатор ModalPopup в коде позади и передаю его моей функции javascript.

В Page_Load файла default.master.cs:

ContentPlaceHolder cph = (ContentPlaceHolder)FindControl("ContentPlaceHolder1");
string sMpeID = (AjaxControlToolkit.ModalPopupExtender)cph.FindControl("mpeEditUser");

В моей функции Javascript:

var mpe = $find('<%=sMpeID%>');
if (mpe != null) {
            mpe.hide();
}

1 Ответ

0 голосов
/ 01 февраля 2012

Скорее всего, тэг испортился при вызове через другую страницу, это случилось со мной. Я не знаю лучшего решения для вас, однако способ, которым я решил эту проблему, заключался в том, чтобы сначала найти mpe с помощью функции javascript, которая искала нечеткое совпадение среди всех элементов на странице.

var elemets = document.getElementsByTagName("*");
var mpe;
for (var i = 0; i < elemets.length; i++) {
    var id = elemets[i].id
    if (id.indexOf("mpe") >= 0) {
        mpe = elemets[i];
    }
}

Если у вас есть более одного mpe на странице, вы можете захотеть сопоставить больше, если строка. Для меня функция elements вернула только около 50 элементов, так что это было не слишком сложно. Возможно, это не так, но даже если вы не используете эту функцию в конечном продукте, она поможет вам узнать фактический идентификатор элемента.

...