2017-07-28 1 views
1

ich mehrere modals auf meiner Seite haben, suchen Sie wie folgt vor:Zwei verschiedene Modalverben mit einer Prüffunktion

  1. Die erste modale allgemeinen Informationen für sie anmelden/registrieren und ich will, dass angezeigt werden müssen wenn ein Benutzer anonym ist (nicht angemeldet) oder kein aktives Abonnement hat (selbst wenn er eingeloggt ist). Ich habe bereits eine Flagge/check dafür.

  2. Die anderen Modalverben werden YouTube-Videos aufnehmen ...

Wenn ein Benutzer klickt auf den Play-Tasten in einem Raster würde Ich mag eine Funktion aufzurufen, die Flagge zu überprüfen, ich sprach. Wenn das Flag wahr ist, wird das entsprechende Modal für das jeweilige Video eingeblendet. Wenn das Flag falsch ist, wird das Login/Register modal angezeigt.

Wie kann ich etwas so machen und kann jemand bitte helfen?

Vielen Dank im Voraus!

Antwort

0

Versuchen Sie etwas wie dieses. Wie Sie sagten, wenn Flag TRUE ist, dann triggern Sie die zweite Funktion, so dass es ziemlich einfach ist, Sie müssen nur IF ELSE Anweisung verwenden.

$(document).ready(function(){ 
 
    $("#btn").on("click",function(){ 
 
     //Your first module code goes here. 
 
     alert('I am first.'); 
 
     secondModule(); 
 
    }); 
 
}); 
 
function secondModule(){ 
 
    //Your second module code goes here. 
 
    alert('I am second'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="btn">Click</button>

+0

Vielen Dank, Zaid! Aber ich werde mehrere Schaltflächen oder Links zum Klicken haben. Eine Seite könnte 6,7,8 oder 20 Videos enthalten, das bedeutet genauso viele Play Links.Wenn sie auf den Wiedergabe-Link klicken, möchte ich diesen Check ausführen und das entsprechende Video im Modal dynamisch anzeigen. – Donato

+0

Weisen Sie dann jedem "btn" eine eindeutige ID zu und verwenden Sie diese Art von Code innerhalb der Schleife. Damit jedes Video über ein Skript verfügt. –

+0

Ich könnte mehrere DIVs mit dem Video darin haben, aber ich brauche diese, um in einem modalen aufzutauchen. – Donato

0

Sie können mit diesem ein wenig Sicherheitsproblem haben. Wenn es zu 100% clientseitig ist, wird es einfach sein, die Konsole zu umgehen, also würde ich einen Ajax-Aufruf für Ihr Flag vorschlagen und dann das entsprechende HTML zurückgeben. Das Tolle daran ist, dass Sie es überall auf der Seite wiederverwenden können.

[EDIT:. Offensichtlich benötigen Sie eine Variable für das Video zu übergeben, hat das Skript aktualisiert worden, dass zu reflektieren]

Kurz gesagt, fügen Sie in Ihren HTML, eine Klasse namens „checkLoggedIn“ (oder irgendetwas) zu den Links, die den modalen starten wird ...

<a href="a-script-that-handles-non-js-requests.php" data-videoID="somevideoID" class="checkLoggedIn">View my rad videos!</a> 

Dann wird die modale (unter der Annahme Bootstrap hier)

<div class="modal fade" id="videoModal" aria-hidden="true" aria-labelledby="videoModal" role="dialog" tabindex="-1"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
     <h4 class="modal-title">Modal title</h4> 
    </div> 
     <div class="modal-body"> 

     </div> 
     <div class="modal-footer"> 
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
    <button type="button" class="btn btn-primary">Save changes</button> 
    </div> 
</div><!-- /.modal-content --> 

Dann in Ihrem bereit func ...

$(function() { 
$('#videoModal').modal(); 
    $(".checkLoggedIn").click(function(event) { 
     event.preventDefault(); 
let videoID = $(this).data('videoID'); 
     $.get("check_login.php?videoID="+videoID, function(data) { 
      $(".modal-body").html(data); 
       $('#.videoModal').modal('show'); 
       //show right now with .modal-body containing the returned 
       //HTML from the check_login.php script. 
     }); 
    }); 

}); 

So onload, jedes Element mit "checkLoggedIn" eingestuft wird von etwas zu tun klickbare verhindert werden. Ein Ajax-Aufruf an ein serverseitiges Skript namens "check_login.php" wird ausgelöst, das Skript gibt den HTML-Code entweder für Ihre Anmeldung oder Ihre Videos zurück.

Der falsche Weg, es zu tun wäre eine Art "wenn" Aussage zu entscheiden, ob der Kerl eingeloggt ist oder nicht. Zeigen Sie dann das Modal.

[EDIT: Ihr PHP-Skript hat ein wenig mehr mit dem videoID zu tun]

<?php 
if(dudeIsLoggedIn()){ 
    $html = goGetTheHTMLForThisVideo($_GET['videoID']); 
    if($html){ 
     echo $html; 
    } else { 
     echo "Sorry, the video isn't available"; 
    } 
} else { // dude isn't logged in 
    echo goGetTheHTMLForLoggingIn(); 
} 

?> 
+0

Danke, Lucas! Also, wie wird das Modal mit mehreren Play-Tasten wissen, welches Video zu spielen ist? Es ist eine Liste mit Videos, die jeweils einen Play-Button haben. Das Videomodal/DIV muss wissen, welche URL abgespielt werden soll, aber gleichzeitig dieses Flag prüfen, wenn der Benutzer ein aktives Konto hat. – Donato

+0

Ich habe das Skript bearbeitet, während Sie diese Frage gestellt haben. Überprüfen Sie es jetzt. Das sollte es abdecken. – Lucas

+0

Ich benutze C# ...: -/Aber ich denke, ich kann es verstehen. – Donato

Verwandte Themen