2015-04-07 3 views
0

Использование JQuery ниже:Jquery скрывается IFRAME правильно, но не показывать его по щелчку

<script> 
$(document).ready(function(){ $("#myiframe").hide(); }); 
$(document).ready(function(){ $("#submit").click(function(){ $("#myiframe").delay(1000).show(0); }); }); 
</script> 

Я могу успешно скрыть IFRAME, что говорится в «если» даже в PHP скрипт. Смотрите ниже:

<?php 
    $minAge = 22; 
    $minAge *= 3600*24*365.25; // $minAge in seconds 

    if(isset($_POST['submit'])){ 
     $birth_date = strtotime($_POST['dob']); 
     $now = strtotime("now"); 
     $age = $now - $birth_date; // age is in seconds 
?> 
    <iframe id = "myiframe" style='position: absolute; z-index: 10; height: 100%;' 
      src = "<?php echo ($age > $minAge ? 'http://URL1.com' : 'http://URL2.com'); ?>" 
      frameborder = "0" 
      width = "350px" 
    </iframe> 

Но при нажатии на кнопку, которая должна показать IFRAME, я хочу показать его с одной секундной задержкой (как показано в JQuery).

См кнопку реализован в виде здесь:

<form method="post" id="form"> 
     <p2>Please select your date of birth below to verify your age.</p2> 
     <input type="date" name="dob"> 
     <input type="submit" name="submit" value="Verify Age" id="submit" /> 
    </form> 

Полный код здесь: http://pastebin.com/EaafieB7

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

Если кто-нибудь может указать, где я ошибаюсь, я был бы признателен!

+2

Является ли перезагрузка страницы, когда вы нажимаете submit? Потому что я не вижу, чтобы вы препятствовали отправке формы. – denat

+0

Try: '$ (document) .ready (function() {$ (" # submit "). Click (function (e) {e.preventDefault(); $ (" # myiframe "). Delay (1000) .show (0);});}); ' – Downgoat

+0

@denat huh? нет, страница не перезагружается, я не хочу, чтобы это делалось. не скрывая iframe с помощью jquery-скрипта в заголовке, он отображается отлично (iframe), однако я хочу, чтобы он показывался с задержкой, поэтому я скрываю его по умолчанию и хочу показать его снова с задержкой, используя '. show() ' – Snowlav

ответ

1

Ваш JQuery можно переписать в виде:

$(document).ready(function() { 
     $('#myiframe').hide(); 
     $('#form').submit(function() { 
      setTimeout(function() { $('#myiframe').show();}, 1000); 
     }); 
}); 

Поскольку вы отправляете форму, то целесообразно использовать обработчик события submit вместо click. Я не очень хорошо знаком с функцией jQuery delay, но setTimeout устанавливает задержку в указанное время и должен достичь того, что вы ищете. Надеюсь это поможет!

+0

iframe скрывается правильно, Я также заметил, что iframe загружается, однако он не отображается после задержки. Он остается скрытым. – Snowlav

+0

Какой URL-адрес вы используете как iframe src? Прежде всего, страница перезагружается при отправке, так как ** denat ** сказал - вы можете сказать, отправив свой возраст и пытаясь обновить страницу - вам дано предупреждение о повторной отправке данных. Что касается iframe, не загружающего контент, проверьте свою консоль (проверьте элемент в Safari или Google Chrome), и вы увидите, что такие сайты, как Google, Yahoo, Facebook и т. Д. Блокируют доступ к iframe, как вы пытаетесь. –

+0

URL1.com и URL2.com, оба отлично отображаются в iframe. все работает отлично, без jquery, однако я хочу добавить задержку между кнопкой отправки и посетителем, увидев iframe в jQuery, по какой-то причине у меня нет проблем, скрывающих iframe с кодом в OP, но я не могу показать его снова после сокрытия. – Snowlav

2

Хорошо, я вижу, что вы пытаетесь сделать сейчас, но это не сработает. Вы можете сделать два способа:

  1. Выполняйте проверку верификации возраста в PHP и распечатайте iframe только в том случае, если проверка прошла успешно. Недостатком этого является то, что он перезагрузит страницу, поведение, которое вы, по-видимому, не хотите.
  2. Сделайте проверку проверки возраста в Javascript, но вам нужно будет перехватить обработчик отправки формы, чтобы он не перезагружал страницу, через e.preventDefault().

Третий вариант заключается в использовании вызова AJAX, если вы действительно настаиваете на использовании PHP для проверки возраста, но это просто переусердствует.

+0

привет и спасибо за ваш вклад, я хотел бы знать, почему вы думаете, что это не сработает. так как я могу скрыть iframe с jqeury и все еще загружать его, почему я не могу просто показать его снова? – Snowlav

+0

Поскольку вы проверяете верификацию по возрасту через PHP, и этот код не может быть достигнут, если форма не отправлена ​​(и страница перезагружена). Лучшее, что вы можете сделать, это отправить форму (и перезагрузить страницу), а затем показать iframe после задержки. – denat

+0

Это неправда, php работает отлично, не обновляя страницу. – Snowlav

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