2017-07-19 7 views
0

Wir haben derzeit eine Schaltfläche, die eine Aktion an eine API sendet. Dies ist eine Werbegeschenk-App. Was ich erreichen möchte: Wir haben mehrere Sponsoren in der Datenbank. (Mehrere Links). Die Schaltfläche sollte nur verfügbar sein, wenn auf jeden Link geklickt wird.JavaScript macht Benutzer vor dem Ausführen der nächsten Aktion klicken

Wie kann ich dies mit mehreren Links tun? Ich habe darüber nachgedacht, als wir wie eine Verbindung hatten, konnten wir eine Variable auf wahr setzen. Wie können wir das mit mehreren machen?

+1

nur Wert auf 'true' gesetzt, wenn alle Links angeklickt wurden? Einen "angeklickten" Wert für jeden der Links setzen? –

+0

Haben Sie einen Beispielcode? – henrybbosa

+0

Beispielcode noch nicht, ich suche nach einer Option, es zu tun. Du würdest also so etwas wie das Überprüfen aller Link-Klassen (wie Link-Sponsor) und das Hinzufügen einer anderen Klasse oder eines Datenwerts dafür sagen, sobald es geklickt hat? Das ist eine nette Idee, danke. – Astinox

Antwort

1

So würde ich damit umgehen.

Weisen Sie zuerst jedem Link eine eindeutige Klasse zu. Erstellen Sie dann ein Array, das die Klassen für jeden Link enthält, auf den Sie klicken möchten. Dann können Sie überprüfen, ob jede dieser Verbindungen durch Überprüfung geklickt haben, wenn ihre Klasse im jeweiligen Array ist:

var required_links = ["one", "two", "three"]; 
 
var count = 0; 
 

 
$(document).on("click", ".link", function() { 
 
    if ($.inArray(this.classList[1], required_links) != -1 && !$(this).hasClass("clicked")) { 
 
    console.log("User clicked link '" + this.classList[1] + "' for the first time."); 
 
    count++; 
 
    $(this).addClass("clicked"); 
 
    } 
 
    if (count == required_links.length) { 
 
    console.log("All links clicked"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="link one">Link 1</div> 
 
<div class="link two">Link 2</div> 
 
<div class="link three">Link 3</div>

In dem obigen Code-Schnipsel, ich Überprüfung auf das Vorhandensein der clicked Klasse. Nach dem Klicken auf das Element wird die Klasse hinzugefügt, sodass nicht erneut darauf geklickt werden kann. Dies stellt sicher, dass Sie auf jede Verbindung klicken müssen, anstatt einfach auf dasselbe Element mehrere Male klicken zu können.

Beachten Sie, dass ich <div> Tags im obigen Beispiel verwende, aber die gleiche Theorie funktioniert, indem Sie einfach die relevanten Klassen an das <a> Tag anhängen.

Hoffe, das hilft! :)

+0

Danke! Das war genau das, wonach ich suchte. – Astinox

1

Ich weiß, dass Sie möglicherweise keine andere Lösung benötigen, aber dies könnte ein wenig einfacher zu pflegen basierend darauf, wie viele Links Sie haben. Sie können so viele Links haben, wie Sie wollen, stellen Sie einfach sicher, dass sie eine class="required" haben.

Wenn Sie auf jeden Link klicken, wird diese Klasse entfernt. Sobald keine Verbindungen mehr mit class="required" bestehen, wird der Button/Link klickbar.

$(function() { 
 
\t $(".required").click(function() { 
 
    \t $(this).removeClass("required"); 
 
     if ($(".required").length == 0) { 
 
     \t $("button").prop("disabled", false); 
 
     \t $("button").text("Well maybe now you can."); 
 
     } 
 
    }); 
 

 
\t $("button").click(function() { 
 
    \t // second check to deter the tricksters 
 
    \t if ($(".required").length == 0) { 
 
     \t window.location.href = "http://www.gosomewherecool.com/" 
 
     } 
 
    }); 
 
})
.required { 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="https://google.com" target="_blank" class="required"> You gotta click me! </a> <br> 
 
<a href="https://google.com" target="_blank" class="required"> Oh and me! </a> <br> 
 
<a href="https://google.com" target="_blank" class="required"> Me too! </a> <br> 
 

 
<button disabled> 
 
Can't click me yet! 
 
</button>

+0

Das macht es viel einfacher. Danke für den Vorschlag. – Astinox

Verwandte Themen