2012-05-03 4 views
1

Я использую этот учебник, чтобы добавить модальное окно:Закрытие модального Popup, нажав от него

http://raventools.com/blog/create-a-modal-dialog-using-css-and-javascript/

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

Пользователь сказал мне, чтобы добавить onclick='overlay()' к наложенному DIV как этот <div id="overlay" onclick='overlay()'>

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

+0

Вы можете проверить, если щелчок происходит от наложения, а затем вызвать 'наложения()' – Musa

+0

нормально, но как бы я проверить, где щелчок пришел, я не являюсь это замечательно в javascript. – Arken

ответ

1

Попробуйте это:

$(document).ready(function(){ 
$('#overlay').bind('click', function(event){ 
    if (event.target == $('#overlay').get(0)) 
     overlay(); 
}); 
+0

Привет, извините, но я добавил, и ничего не сделал, когда я попытался закрыть его, я не уверен, что я делаю неправильно, спасибо за вашу помощь, хотя – Arken

+0

Является ли контент вашего модального div внутри 'overlay' div? Он должен работать, если так. –

+0

Я отредактировал его немного, попробуйте снова с вашим исходным кодом и моей функцией 'ready()'. –

0

Вам нужно будет переместить код наложения из модального окна. Отделив это, у вас не будет наложения в качестве родителя окна, и событие click будет срабатывать только на оверлее.

<div id="overlay"> </div> 
<div id="modalWindow"> 
    <p>Content you want the user to see goes here.</p> 
</div> 
+0

Привет, я просто попробовал это сейчас и переместил весь код изнутри наложения под ним, но все, что появляется, - это полупрозрачное наложение и ни один из собственно модального кода. – Arken

+0

CSS '#overlay div' не будет работать, если вы переместите внутренний div вне div' overlay'. Переименуйте '#overlay div' в' # modalWindow'. Вам также придется изменить функцию js, чтобы скрыть также modalWindow. –

+0

Привет, я изменил имя, а также попытался изменить javascript, чтобы закрыть его, но он все еще не отображается, все, что я получаю, это оверлейный дисплей, но не фактический modal_wrapper со всем содержимым, любыми идеями? Спасибо за вашу помощь. – Arken

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