2014-02-18 2 views
1

Я пытаюсь получить shadowbox для закрытия после отправки формы. в настоящее время мой php настроен на обновление вопроса опроса. Теперь, когда я использую shadowbox для загрузки опроса на загрузку страницы, я хочу, чтобы он исчез сразу после нажатия кнопки отправки.Shadowbox - Auto close on php form submission

Ссылка на сайт: Survey site.

Мой PHP код:

<?php 
$to = "[email protected]"; 
$subject = 'Survey Results'; 
$group1 = $_POST["group1"]; 
$headers = "From: $name <$email>\n"; 
$headers .= "Content-Type: text/plain; charset=iso-8859-1\n"; 
$mes .= 'Training Method Preferred: '.$group1; 
{ 
    mail($to, $subject, $mes, $headers); 
} 
header('Location: ' . $_SERVER['HTTP_REFERER']); 
?> 

Я не уверен, если это то, что я должен написать в коде PHP или в shadowbox.js. Любая помощь приветствуется.

+0

Я рекомендую вам, создать сеанс или куки вар, когда пользователь посещает ваш сайт, Су вы можете создать вопрос если ($ _ SESSION [ «USR»] == 1) // Shadowbox НЕ ВИДНА Если вы хотите, чтобы скрытый теневой ящик, когда пользователь нажимает на submit, это легко с jquery, но вы отправляете, отправляете форму и обновляете страницу, и, следовательно, будет невозможно. – Netzach

ответ

2

Может попробовать это -

Проверьте, если group1 был представлен и добавить класс к Shadowbox.

Тогда только откройте shadowbox, если есть класс open.

PHP

<?php  
    $shadowboxClass = ''; 

    if (!isset($_POST["group1"])) { 
     $shadowboxClass = '.open'; 
    } 
?> 

<div id="sb-container" class="<?php echo $shadowboxClass; ?>"> 

JQuery

window.onload = function() { 

    if($("#sb-container").hasClass('open')){ 

     // open a welcome message as soon as the window loads 
     Shadowbox.open({ 
      content: '<div id="welcome-msg">Welcome to my website!</div>', 
      player:  "html", 
      title:  "Welcome", 
      height:  350, 
      width:  350 
     }); 
    } 
}; 

Тогда, как Нецах предложил вам следует установить переменную сеанса, но затем просто сделать это, если заявление.

<?php 

    if (isset($_POST["group1"]) && !empty($_POST["group1"])) { 
     $to = "[email protected]"; 
     $subject = 'Survey Results'; 
     $group1 = $_POST["group1"]; 
     $headers = "From: $name <$email>\n"; 
     $headers .= "Content-Type: text/plain; charset=iso-8859-1\n"; 
     $mes .= 'Training Method Preferred: '.$group1; 
     { 
      mail($to, $subject, $mes, $headers); 
     } 

     $_SESSION['submitedSurvey'] = 1; 

     header('Location: ' . $_SERVER['HTTP_REFERER']); 
    } 

    $shadowboxClass = ''; 

    if ($_SESSION['submitedSurvey'] != 1) { 
     $shadowboxClass = '.open'; 
    } 

?> 

<div id="sb-container" class="<?php echo $shadowboxClass; ?>"> 
0

then ... Я рекомендую вам использовать $ _SESSION var при получении формы.

Например: ваша форма: Shadowbox

<form id="form" action="process.php"> 
//YOUR RADIOBUTTONS OR CHeCKBOX 
<input type="submit" value="Submit" id="btn_submit"> 
</form> 

process.php

<? 
$_POST['myCheckbox']; 
$_SESSION['user'] = 1; 

//.... etc etc your source... 
?> 

Теперь ваша страница снова

<? if($_SESSION['user'] != 1){//the user already filled in the form 
    //YOUR SHADOWBOX CODE 
}?> 

С Jquery очень легко скрыть окно, когда вы нажимаете на submit

<script> 
$('#btn_submit').click(function(){ 
    $('#theiddivoryourshadowbox').hide(); 
}); 
</script> 

Затем, если вы не хотите обновлять страницу, я рекомендую вам использовать ссылку, а не кнопку, то вы можете использовать ajax для отправки формы, и сразу после нажатия ссылки вы спрячете div box with hide(); функция jquery. Если вам нужно помочь с этим кодом, просто закажите его!