2013-06-12 4 views
1

У меня есть страница aspx, которая появляется в дочернем окне. Есть ли способ сделать родительское окно недоступным до закрытия закрытого дочернего окна?Отключить родительское окно, когда открыто всплывающее окно для детей

Для записи я использую следующий код jQuery для открытия и закрытия всплывающего окна. На родительской странице:

 $(document).ready(function() { 
      $('#btnLogos').click(function() { 
       window.open("Logos.aspx", "List", "scrollbars=no, resizable=no, width=500, height=350"); 
      }); 
     }); 

Код выше срабатывает, когда кнопка под названием «btnLogos» щелкают из родительского файла ASPX, затем в дочернем всплывающем окне у меня есть следующие JQuery:

$(document).ready(function() { 
    $('#btnSubmit').click(function() { 
     var val = $('input:radio[name=myRadio]:checked').val(); 
     $(window.opener.document).find('#txtLogos').val(val); 
     window.close(); 
    }); 
}); 

Как вы можете видеть из приведенного выше кода, он не только закрывает всплывающее дочернее окно, но также передает значение в текстовое поле в родительском окне одним нажатием кнопки. Моя единственная проблема заключается в том, чтобы убедиться, что родительское окно недоступно, пока эта кнопка в дочернем окне не будет нажата. Я пробовал использовать различные решения от CSS до Javascript, но не был успешным. Я также знаю, что это можно сделать с помощью showModalDialog, но этот сайт должен работать в любом браузере, а не только в IE. Любые идеи о том, как достичь этого?

спасибо.

+3

Используйте модальный диалог (диалог jQuery) вместо всплывающего окна. Использование диалоговых окон проще и проще для достижения желаемого эффекта. –

+0

Проблема в том, что мне нужно всплывающее окно aspx, которое уже существует. Я думаю, мои вопросы: можете ли вы открыть страницу aspx внутри модального диалога jQuery? Если да, можете ли вы передать значение из дочернего окна в родительское окно? Также он работает на всех браузерах? – user2471103

ответ

0

Поиграйте с этим кодом в всплывающем:

$(window).on("blur", function(){ ... }); 

Это будет срабатывать каждый раз, когда пользователь покидает окно. Внутри функции аргумента вы должны иметь возможность заставить окно восстановить фокус, возможно, используя $(this).focus() или self.focus().

Я не проверял это сам. Удачи!

Смежные вопросы