2016-12-01 2 views
0

Как запустить javascript, если выполняется только условие php? Я пытаюсь показать всплывающее окно, только если $page_count - <= 1. PHP отлично работает и работает правильно, поскольку я тестировал его с помощью простых эхо-сигналов, только когда я пытаюсь свести на нет выполнение javascript, если $page_count превышает 2, что все еще выполняется.Запуск javascript только в том случае, если выполнено условие php

Есть ли общий метод для этого?

if ($page_count <= 1) { 
    $setup_popup = 
    '<div id="status-popup"> 
     <div id="status-popup-container" class="total-center"> 
      <a class="popup-close" data-popup-close="popup-1" href="#">Close</a> 
     </div> 
    </div>' 
    ; 
} 
else { 
    $setup_popup = NULL; 
} 

Javascript

$('#status-popup').fadeIn(350); 

$('[data-popup-close]').on('click', function(e) { 
    var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
    $('#status-popup').fadeOut(350); 
    $('body').css('overflow', 'auto'); 
    e.preventDefault(); 
}); 
+1

Почему бы не просто передать счетчик в качестве переменной и позволить JS решить? – ssube

+2

Как js запускается, если у вас нет 'status-popup' на странице? –

+0

@ssube Не знаете, как это сделать. – Paul

ответ

1

Как предложили комментаторам, как-то просто, как:

if(document.getElementById('status-popup')){ 
    $('#status-popup').fadeIn(350); 

    $('[data-popup-close]').on('click', function(e) { 
     var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
     $('#status-popup').fadeOut(350); 
     $('body').css('overflow', 'auto'); 
     e.preventDefault(); 
    }); 
} 

должны это сделать.

Вы также можете заключить JavaScript внутри PHP, если заявление, если это необходимо:

<?php 
if ($page_count <= 1) { 
?> 
     $('#status-popup').fadeIn(350); 

     $('[data-popup-close]').on('click', function(e) { 
      var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
      $('#status-popup').fadeOut(350); 
      $('body').css('overflow', 'auto'); 
      e.preventDefault(); 
     }); 
<?php 
} 
?> 
+0

Первое решение не помогло. Я попробую второй. – Paul

1

Я всегда хотел бы добавить модальные элементы, но включают счетчик, и пусть JS сделать логику:

<script type="application/javascript"> 
var pageCounter = <?php $page_count ?>; 
if (pageCounter) { 
    $('#status-popup').fadeIn(350); 

    $('[data-popup-close]').on('click', function(e) { 
    var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
    $('#status-popup').fadeOut(350); 
    $('body').css('overflow', 'auto'); 
    e.preventDefault(); 
    }); 
} 
</script> 
<div id="status-popup"> 
    <div id="status-popup-container" class="total-center"> 
    <a class="popup-close" data-popup-close="popup-1" href="#">Close</a> 
    </div> 
</div> 

Не магия, небольшая сложность, и вы можете изменить или проверить значение как с клиента, так и с сервера (что позволяет делать небольшие вещи, такие как модульное тестирование, AJAX и т. Д.).

+0

Так что я бы просто установил условие pageCounter = = 1? If (pageCounter = <1) {'? – Paul

+0

Вы можете изменить 'if (pageCounter)' любое условие, которое вы хотите. – ssube

+0

Не будет ли это решение всегда оставлять статический html подарок? Я хочу, чтобы html был видимым, если условие выполнено. – Paul

1

код PHP выполняется сервером, чем это результат Передано в клиента, так что вы можете сделать:

if ($page_count <= 1) { 
    $setup_popup = ""; 
    if ($page_count >=2) { 
     $setup_popup .= "<script type="text/javascript">[put your js code here]</script>"; 
    } 
    $setup_popup .= '<div id="status-popup"> 
     <div id="status-popup-container" class="total-center"> 
      <a class="popup-close" data-popup-close="popup-1" href="#">Close</a> 
     </div> 
    </div>'; 
} 
else { 
    $setup_popup = NULL; 
} 
0
var page_count = <?= $page_count ?>; 

if(page_count <= 1) { 
    $('#status-popup').fadeIn(350); 
    $('[data-popup-close]').on('click', function(e) { 
     var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
     $('#status-popup').fadeOut(350); 
     $('body').css('overflow', 'auto'); 
     e.preventDefault(); 
    }); 
} 

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

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