Webprofis is een Forum waarin je vragen kunt stellen die webgerelateerd zijn. Heb je vragen over of problemen met je Webpagina, HTML, CSS, Javascript, PHP of andere client of serverside scriptingtalen? Stel ze dan gerust op dit forum.
Op dit forum zijn een aantal vrijwilligers actief die u graag met uw vragen willen helpen en u waar mogelijk een passend antwoord aanbieden.
Hebt u zelf veel ervaring en kennis met betrekking tot het bovenstaande? U bent van harte welkom om uw kennis met anderen te delen!
We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.
Team Webprofis
We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.
Team Webprofis
andere anchors blokkeren als er eentje op actief staat
het gaat om de volgende functie waarin de groene V actief wordt als je op de kleine grijze V klikt.
Wat hierboven gebeurt: Als je op de grijze V klikt, swapt de classe op on (classe img.swap on bezit de groene V)
Als je er niet op klikt (default) blijft de V grijs (classe img.swap)
Als je op een V klikt die al groen is, wordt ie weer grijs (classe img.swap on switch naar img.swap terug).
Nu is het echter mogelijk meerdere V's groen te maken. Hierop wil ik een check maken zodat dat niet meer mogelijk is als er al een V groen is. De anderen kunnen dan niet ook nog eens groen worden.
Hoe kan ik dit het beste realiseren?
protected function AddMarkV($Sender) {
$Discussion = $Sender->EventArguments['Discussion'];
$Session = Gdn::Session();
$Comment = $Sender->EventArguments['Comment'];
if($Session->UserID == $Discussion->InsertUserID || $Session->CheckPermission('Garden.Moderation.Manage')) {
if ($Comment->MarkV) {
echo Anchor("", 'discussion/markv/' . $Comment->CommentID, array('title' => "Annuleren", 'class' => "Hijack img-swap on"));
}
else {
echo Anchor("", 'discussion/markv/' . $Comment->CommentID, array('title' => "Beste Antwoord", 'class' => "Hijack img-swap"));
}
}
else {
if ($Comment->MarkV) {
echo Wrap("", 'div', array('class' => 'Hijack img-swap on'));
$Sender->CommentModel->SetField($Comment->CommentID, 'MarkV', !$Comment->MarkV);
}
else {
echo Wrap("", 'div', array('class' => 'Hijack img-swap'));
}
}
}
Wat hierboven gebeurt: Als je op de grijze V klikt, swapt de classe op on (classe img.swap on bezit de groene V)
Als je er niet op klikt (default) blijft de V grijs (classe img.swap)
Als je op een V klikt die al groen is, wordt ie weer grijs (classe img.swap on switch naar img.swap terug).
Nu is het echter mogelijk meerdere V's groen te maken. Hierop wil ik een check maken zodat dat niet meer mogelijk is als er al een V groen is. De anderen kunnen dan niet ook nog eens groen worden.
Hoe kan ik dit het beste realiseren?
Login of Registreer om te reageren.
Reacties
Als je dit dus (ook) serverside wilt oplossen, zul je dus bij de aanroep van deze functie moeten gaan kijken of er al een post een achor bevat of niet, om er dan een (nieuwe) if rule bij te plempen.
Edit
Heb het nu zo dat een 2e V niet veranderd bij clicken als er al eentje groen is (classe dus op on staat); je kunt de groene wel direkt weer terugzeten op grijs
Maar na een refresh slaat het 2e anchor dat je probeerde aan te klikken WEL op groen
Dus ik zal ook een check serverside moeten doen denk ik dan?
Ik neem aan dat wanneer je die toggleClass aanroept, dat er dan ook een ajaxcall gedaan wordt naar het php gedeelte?
Die call zou je dan dus ook niet moeten doen.
Waar je onder andere mee te maken hebt als je een js only check doet, is dat het niet gaat kloppen als je de anchors op de pagina checked zodra je meerdere pagina's hebt.
Het makkelijkst zou zijn als je in de openingspost (in de db) bijhoud welke post het anchor heeft.
Bij het aanklikken (met de juiste rechten) update je gewoon die waarde (als het dezelfde post betreft zet je de waarde op 0)
Bij een vaste naame maak je een lijstje met de vaste namen, eventueel doorgeven aan javascript bij de aanroep of in de setup. Dat lijstje kun je genereren in PHP.
Bij opvolgende nummers maak je een lus en ga je ze langs totdat een nummer niet meer bestaat. Dt zou dan het einde van het lijstje zijn. Of als je er gaten in hebt zitten ga door tot een bepaald eindnummer.
Hieronder een voorbeeld met unieke namen:
Select_ID = een lijstje met namen gescheiden door een spatie.
Bij opvolgende nummers kan Select_ID vervallen en kun je het "anchor_id_ + nummer ipv Select_ID gebruiken. $select_IDs.length moet je dan vervangen door het aantal. $select_IDs.lengt kun je op 0 zetten als er een undefined is gevonden.
vinTage edit:
Code tussen codetags gepropt
Als je op pagina een bent, weet je niet of er op pagina 2 of pagina 450 al een "like" gegeven is. (zonder met een sql query alle resultaten af te gaan.
Als je over meerdere pagina's wilt werken zul je het resultaat moeten opslaan, zodat je dat terug kunt halen. Dan zou je code moeten aanpassen, zodat daarin wordt opgeslagen welke item geselecteerd was.
of indien topic row is 1 dan niks meer mogelijk.
ben met eerder bericht van vinTage eens (db).