Jump to content
  • 0

Помогите с popUP окном на jQuery


IvanRu08
 Share

Question

Всем привет. Необходимо сделать всплывающую форму на jquery. Перепробовал много решений из интернете, ни одно не работает по нормальному.  Вот код формы: 

<div class="popup">   <form action="#" name="popup-form">      <label for="user-name">Имя</label>      <input type="text" id="user-name" name="user-name" required>      <label for="phone-number">Телефон</label>      <input type="text" id="phone-number" name="email" required>      <input type="submit" value="Отправить">   </form></div>

Вот стили для нее: 

.popup{    width: 378px;    height: 240px;    padding: 15px 0 15px 21px;    border: 1px solid #ff7d01;    -webkit-border-radius: 2px;       -moz-border-radius: 2px;            border-radius: 2px;    -khtml-border-radius: 2px;    behavior: url(border-radius.htc);    display: none;}.popup label{    font: 17px 'RobotoRegular';    display: block;    margin: 0 0 5px 0;    color: #2b3d49;}.popup [type='text']{    font-size: 16px;    width: 337px;    height: 45px;    margin: 0 0 18px 0;    padding: 0 10px 0 10px;    border: 1px solid #d4d4d5;    -webkit-border-radius: 2px;       -moz-border-radius: 2px;            border-radius: 2px;    background: #fff;    -khtml-border-radius: 2px;    behavior: url(border-radius.htc);}.popup [type='text']:focus{    border: 1px solid #3b83c0;    outline: none;}.popup [type='submit']{    font: 18px 'RobotoRegular';    width: 194px;    height: 45px;    margin: 5px 0 0 0;    cursor: pointer;    color: #fff;    border: none;    -webkit-border-radius: 2px;       -moz-border-radius: 2px;            border-radius: 2px;    background: #3b83c0;    -khtml-border-radius: 2px;    behavior: url(border-radius.htc);}.popup [type='submit']:hover{    background: #216cab;}

По клику на ссылку "Заказать звонок" в шапке должна показываться эта форма, а при клике в любое место - закрывать. Помогите пожалуйста реализовать это на jQuery. Вот сайт: http://cm04741.tmweb.ru/index.html

Edited by IvanRu08
Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

у вас не подключен скрипт: http://cm04741.tmweb.ru/js/script.js

Да, знаю. Пока все делается на локальном сервере. В интернет выложил только часть.

и jquery ui пробовали ? И оно тоже не работает нормально? =)
 

А целесообразно использовать jquery UI лишь только для popup? 

Примерно так

Спасибо. Скопировал ваш код, но у меня почему то при нажатии на ссылку "Заказать звонок" страница перезагружается

Link to comment
Share on other sites

  • 0
А целесообразно использовать jquery UI лишь только для popup?

 

Ну существует возможность скомпоновать библиотеку только с тем что вам нужно https://jqueryui.com/download/

но она все равно будет весить довольно много.

 

Вы правы только для попапа тащить целые библиотеки как то не правильно.

 

ЗЫ Я спросил про jquery ui ибо вы написали что в интернете не нашли ничего чтобы работало нормально =)

Link to comment
Share on other sites

  • 0

 

 

Спасибо. Скопировал ваш код, но у меня почему то при нажатии на ссылку "Заказать звонок" страница перезагружается

По идее не должно, для кнопки был вызван preventDefault(); Выложите код на ваш сайт, чтоб посмотреть, что не так.

Link to comment
Share on other sites

  • 0

1. нужно добавить в стили класс

.popup.active {  display: block;}

2. код нужно обернуть в жквери

$(function(){    var button = $('.popup-click'),      popup = $('.popup');  button.click( function(e){    e.preventDefault();    if (popup.hasClass('active')) return;    popup.addClass('active');  });  $('body').click( function(e) {      if (!$(e.target).hasClass('popup-click') && !$(e.target).closest(".popup").length && popup.is(':visible'))  {        popup.removeClass('active');      }  });});
Link to comment
Share on other sites

  • 0

@amelice, Спасибо вам огромное! Все заработало.=) 

Пожалуйста :)

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

$(function(){  var button = $('.popup-click'),      popup = $('.popup');  button.click( function(e){    e.preventDefault();    if (popup.hasClass('active')) return;    popup.addClass('active');  });  $('body').click( function(e) {      if (!$(e.target).hasClass('popup-click') && !$(e.target).closest(".popup").length && popup.is(':visible'))  {        popup.removeClass('active');      }  });  $(".popup_close").click(function(){popup.removeClass("active") }); }) 
Link to comment
Share on other sites

  • 0

@amelice, А как сделать, чтобы класс active добавлялся еще к одному элементу? Я создал .overlay и прописал ему следующее:

.overlay {	z-index: 50; /* пoдлoжкa дoлжнa быть выше слoев элементoв сaйтa, нo ниже слoя мoдaльнoгo oкнa */	position: fixed; /* всегдa перекрывaет весь сaйт */	background-color: #000; /* чернaя */	opacity: 0.8; /* нo немнoгo прoзрaчнa */	width: 100%; 	height: 100%; /* рaзмерoм вo весь экрaн */	top: 0; 	left: 0; /* сверху и слевa 0, oбязaтельные свoйствa! */	cursor: pointer;	display: none; /* в oбычнoм сoстoянии её нет) */} 

Как мне еще и к этом классу добавить active? Пробовал вот так, не работает:

$(function(){    var button = $('.popup-click'),      popup = $('.popup'),      overlay = $('.overlay');  button.click( function(e){    e.preventDefault();    if (popup.hasClass('active')) return;    popup.addClass('active');  });  button.click( function(e){    e.preventDefault();    if (overlay.hasClass('active')) return;    overlay.addClass('active');  });  $('body').click( function(e) {      if (!$(e.target).hasClass('popup-click') && !$(e.target).closest(".popup").length && popup.is(':visible'))  {        popup.removeClass('active');      }      if (!$(e.target).hasClass('popup-click') && !$(e.target).closest(".overlay").length && overlay.is(':visible'))  {        overlay.removeClass('active');      }  });});
Edited by IvanRu08
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy