ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
2029
2029
EMPFEHLEN
-
guten abend miteinander.
ich arbeite im moment an einem kleinen projekt bei dem ich jqeury verwende. ich lasse mit php eine banale liste erstellen, deren html code so aussieht.
diese liste ist teil eines formulars. am anfang des formulars gibts der benutzer ledeglich seine daten ein und kann danach aus der obigen liste sich bei verschiedenen personen anmelden. das anmelden bei einer / mehreren personen wäre soweit kein problem, könnte man ja über eine checkbox machen.HTML-Code:<ul id="user_list"> <li id="usr-1">Benutzer 1 <a href="#" class="rgstr">Anmelden</a></li> <li id="usr-2">Benutzer 2 <a href="#" class="rgstr">Anmelden</a></li> <li id="usr-3">Benutzer 3 <a href="#" class="rgstr">Anmelden</a></li> </ul>
Ich will aber, dass sich bei einem klick auf den "anmelde"-link eine art "lightbox" öffnet, in der sich ein formular befindet, das eine textarea beinhaltet, in die man einen kurzen text eingeben kann, den man dem jeweiligen benutzer bei der anmeldung mitsenden kann.
ich habe das öffnen der "lightbox" mit dem jqeury plugin "fancybox" gelöst (ob es sinnvoll ist oder nicht wird sich noch zeigen
)
bisher sieht also mein code dann aus wie folgt:
so nun nach längerem rumgetexte nun die frage:HTML-Code:<ul id="user_list"> <li id="usr-1">Benutzer 1 <a href="#" class="rgstr">Anmelden</a></li> <li id="usr-2">Benutzer 2 <a href="#" class="rgstr">Anmelden</a></li> <li id="usr-3">Benutzer 3 <a href="#" class="rgstr">Anmelden</a></li> </ul> <script language="JavaScript"> $(document).ready(function(){ $("a.rgstr").fancybox({ /*'frameHight', 'frameWidth', usw.*/ }); }); </script>
wie muss der code aussehen, dass sich bei einem klick auf den link eine fancybox öffnet, in der sich eine textarea befindet und deren inhalt dann später mit dem ganzen formular mitgesendet werden kann? wie bewerkstellige ich es, dass der jeweilige Benutzer dann auch als "ausgewählt" gekennzeichnet wird?
viele grüße der berti
-
12.08.09 18:03 #2
Mit der Fancybox gibst Du
inline
die Maske aus. Da gibt es den callbackOnClose-Event, der die Daten überprüft, mit den Grunddaten mischt und dann absendet.
Inline also in div id data.
Sonstige Infos -> http://fancybox.net/howto
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
12.08.09 18:06 #3Maik Tutorials.de Gastzugang
Hi.
@bertiSR: Beachte in deinen Forenbeiträgen bitte unsere Netiquette bzgl. der erwünschten Groß- und Kleinschreibung - vielen Dank!
mfg Maik
-
Gut also ich lasse jetzt bei einem Klick auf den Link die fancybox öffnen und eine Seite anzeigen. An diese Seite übergebe ich die benötigten Daten. Zugleich lasse ich beim Schließen des Fensters einen callbackOnClose-Event ausführen. Sieht dann bisher so aus.
Bei dem callbackOnClose-Event habe zum ausprobieren append verwendet. Wenn ich nun das Fenster also schließe, fügt mir diese Funktiona append den Text "hallo" hinzu. Aber sie fügt sie zu jedem Link hinzu. Wie spreche ich nur den jeweiligen Link an?HTML-Code:<ul id="user_list"> <li id="usr-1">Benutzer 1 <a href="rgstr.php?usr_id=1" class="rgstr">Anmelden</a></li> <li id="usr-2">Benutzer 2 <a href="rgstr.php?usr_id=2" class="rgstr">Anmelden</a></li> <li id="usr-3">Benutzer 3 <a href="rgstr.php?usr_id=3" class="rgstr">Anmelden</a></li> </ul> <script language="JavaScript"> $(document).ready(function(){ $("a.rgstr").fancybox({ 'frameHeight': 200, 'frameWidth': 350, 'hideOnContentClick': false, 'padding':10, 'zoomSpeedIn': 450, 'zoomSpeedOut': 200, 'callbackOnClose': function() { $('a.rgstr').append("hallo"); } }); }); </script>
Zur weiteren Übergabe der Daten will ich jedem Link ein unsichtbares Feld hinzufügen. Also:
Mit Hilfe des callbackOnClose-Events will ich dann den Wert der Textarea aus der Fancybox in dieses Feld eintragen und zur weiteren Verarbeitung übergeben. Sinnvoll?HTML-Code:<ul id="user_list"> <li id="usr-1">Benutzer 1 <a href="rgstr.php?usr_id=1" class="rgstr">Anmelden</a><input id="val_usr_1" type="hidden" value="" /></li> <li id="usr-2">Benutzer 2 <a href="rgstr.php?usr_id=2" class="rgstr">Anmelden</a><input id="val_usr_2" type="hidden" value="" /></li> <li id="usr-3">Benutzer 3 <a href="rgstr.php?usr_id=3" class="rgstr">Anmelden</a><input id="val_usr_3" type="hidden" value="" /></li> </ul>
gruß der berti
-
13.08.09 11:46 #5
Hmm, nu' lässt Du doch in der Fancybox eine "externe" Seite anzeigen. Ich dachte, die Idee mit dem Inline-Text wäre soweit gut, damit Du keine "sicherheitsrelevanten" Informationen von einer Seite zur nächsten hieven musst.
Schau nochmal nach inline. Vielleicht klärt sich dann auch das Link-Problem.
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Also wenn ich das howto von Fancybox lese steht bei Inline-Content folgendes:
Mir ist klar was das heist, nur ich habe keine Ahnung wie mir das bei der Lösung meines Problems helfen soll!HTML-Code:<a id="inline" href="#data">This shows content of element who has id="data"</a>

Wie weise ich den Wert der Textarea dem speziellen Link zu?HTML-Code:<ul id="user_list"> <li id="usr-1">Benutzer 1 <a href="#notice" class="rgstr">Anmelden</a></li> <li id="usr-2">Benutzer 2 <a href="#notice" class="rgstr">Anmelden</a></li> <li id="usr-3">Benutzer 3 <a href="#notice" class="rgstr">Anmelden</a></li> </ul> <textarea id="notice"></textarea>
EDIT:
Ah sry stand auf der Leitung. Ich werde hinter jedem Link eine Textarea machen und der eine Id zuweisen. Diese wird dann in der Fancybox angezeigt und der Inhalt übernommen. Rictig so?
HTML-Code:<ul id="user_list"> <li id="usr-1">Benutzer 1 <a href="#notice_1" class="rgstr">Anmelden</a><span id="notice_1"><textarea></textarea></span></li> <li id="usr-2">Benutzer 2 <a href="#notice_2" class="rgstr">Anmelden</a><span id="notice_2"><textarea></textarea></span></li> <li id="usr-3">Benutzer 3 <a href="#notice_3" class="rgstr">Anmelden</a><span id="notice_3"><textarea></textarea></span></li> </ul>
Geändert von bertiSR (13.08.09 um 12:25 Uhr)
-
13.08.09 12:40 #7
Ich habs nicht ausprobiert. Und auf Anhieb wüsste ich nicht, ob es so geht, aber ich wollte Dich nur auf die inline-Möglichkeit aufmerksam machen, eben wegen möglicher sensibler Daten, die im Klartext rumgeschubst werden müssten.. Wenn es funktioniert, dann ist es schön..
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Also nachdem es mit der obigen Methode nicht funktiniert hat, habe ich nun folgendes ausprobiert:
Mit einem Klick auf anmelden öffnet sich der Container mit dem Formular (noch nicht in Fancybox). Wenn ich das Ganze nun mit dem Inline-Content der Fancybox verwende, was dann aussieht wie folgt, funktioniert das ganze nicht mehr:HTML-Code:<ul id="users"> <li>Benutzer 1 <a class="rgstr" href="" id="usr_1">Anmelden</a> <input id="nusr_1" type="text" value="" /></li> <li>Benutzer 2 <a class="rgstr" href="" id="usr_2">Anmelden</a> <input id="nusr_2" type="text" value="" /></li> </ul> <div id="notice" style="display: none;"> <textarea id="text"></textarea> <input id="user_id" type="text" value="" /> <input id="add_notice" type="button" value="Hinzufügen" /> </div> <script language="JavaScript"> $(document).ready(function(){ $("a.rgstr").click(function(){ var usr = $(this).attr("id"); $("#notice").slideToggle(); $("#user_id").attr("value", usr); }); $("#add_notice").click(function(){ var msg = $("#text").val(); var usr = $("#user_id").val(); $("#n" + usr).attr("value", msg); }); }); </script>
Funktioniert das Ganze wie ich es mache mit jQuery schlichtweg so nicht oder habe ich einen Denkfehler oder einen Fehler im Script?HTML-Code:<ul id="users"> <li>Benutzer 1 <a class="rgstr" href="#notice" id="usr_1">Anmelden</a> <input id="nusr_1" type="text" value="" /></li> <li>Benutzer 2 <a class="rgstr" href="#notice" id="usr_2">Anmelden</a> <input id="nusr_2" type="text" value="" /></li> </ul> <div id="notice" style="display: none;"> <textarea id="text"></textarea> <input id="user_id" type="text" value="" /> <input id="add_notice" type="button" value="Hinzufügen" /> </div> <script language="JavaScript"> $(document).ready(function(){ $("a.rgstr").fancybox({ 'hideOnContentClick': false, 'callbackOnStart': function(){ var usr = $(this).attr("id"); $("#user_id").attr("value", usr); }, 'callbackOnClose': function() { var msg = $("#text").val(); var usr = $("#user_id").val(); $("#n" + usr).attr("value", msg); } }); }); </script>
Geändert von bertiSR (14.08.09 um 15:05 Uhr)
-
Hi,
ganz so einfach ist das Problem nicht. Du versuchst in folgendem Codefragment
mit this auf den auslösenden Link zuzugreifen. this referenziert jedoch das fancybox-Objekt.Code :1 2 3 4
'callbackOnStart': function(){ var usr = $([B]this[/B]).attr("id"); $("#user_id").attr("value", usr); },
Um Zugriff auf den auslösenden Link zu erhalten, ist eine Änderung im fancybox-Script selbst notwendig.
Mit folgenden Änderungen sollten die callback-Funktionen das auslösende Element als Parameter übergeben bekommen. Die Änderungen sind jedoch ohne Gewähr und es sollte vom Orginalscript eine Sicherungskopie erstellt werden.
Im Script (z.B. jquery.fancybox.js) werden folgende Passagen gesucht.
1.2.Code :1 2 3
if ($.isFunction(opts.callbackOnStart)) { opts.callbackOnStart(); }3.Code :1 2 3
if ($.isFunction(opts.callbackOnShow)) { opts.callbackOnShow(); }Code :1 2 3
if ($.isFunction(opts.callbackOnClose)) { opts.callbackOnClose(); }
Diese werden wie nachstehend abgeändert.
1.2.Code :1 2 3
if ($.isFunction(opts.callbackOnStart)) { opts.callbackOnStart([B]elem[/B]); }3.Code :1 2 3
if ($.isFunction(opts.callbackOnShow)) { opts.callbackOnShow([B]elem[/B]); }Code :1 2 3
if ($.isFunction(opts.callbackOnClose)) { opts.callbackOnClose([B]elem[/B]); }
Jetzt wird den callback-Funktionen das benötigte Argument übergeben.
Weiterhin wird es noch notwendig, den Wert der Textarea beim Schliessen der Box in die Orignal-Textbox zu schreiben.
Folgendes Fragment funktioniert bei mir mit deinem HTML-Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$(document).ready(function(){ $("a.rgstr").fancybox({ 'hideOnContentClick': false, 'callbackOnStart': function(_this){ var usr = $(_this).attr("id"); $("#user_id").attr("value", usr); }, 'callbackOnClose': function(_this) { $("#text").val($("#fancy_div").find('textarea').val()); var msg = $("#text").val(); var usr = $("#user_id").val(); $(_this).parent().find('input').val(msg); } }); });
Vielleicht hilft dir das weiter.
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
Ah super danke. Ich wäre nie auf die Idee gekommen, dass ich in der Stammdatei selbst etwas ändern muss. Nur noch eine Frage.
Hier "findest" du ja mit find alle input-Tags. Wenn ich in einem Listenelement nun mehrere solcher input-Tags habe wird in jeden Tag der Wert aus der Textarea übergeben.Code :1 2 3 4 5 6
'callbackOnClose': function(_this) { $("#text").val($("#fancy_div").find('textarea').val()); var msg = $("#text").val(); var usr = $("#user_id").val(); [COLOR="Red"]$(_this).parent().find('input').val(msg);[/COLOR] }
Mit find findet man alle Tags. Wenn ich nun find durch filter ersetzt müsste ich doch dann die id des betreffenden Feldes finden, was aber irgendwie nicht geht?!
[CODE]
'callbackOnClose': function(_this) {
$("#text").val($("#fancy_div").find('textarea').val());
var msg = $("#text").val();
var usr = $("#user_id").val();
$(_this).parent().filter('#n' + usr).val(msg);
}
[/CODE
EDIT: Problem erledigt. Hatte nur übersehen aus den Tags zu filtern. Danke
Geändert von bertiSR (15.08.09 um 11:59 Uhr)
Ähnliche Themen
-
JQuery Funktionen unbinden und binden
Von SonMiko im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 30.08.10, 17:03 -
jQuery: Für alle Elemente mit einer bestimmten ID Funktionen hinzufügen
Von acquire im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 26.03.10, 20:02 -
jQuery Funktionen für nicht angezeigte Elemente
Von Microhome im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 19.12.09, 12:28 -
[jQuery] Liste gruppieren
Von Crazy-Achmet im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 11.12.09, 11:10 -
Liste der verfügbaren Funktionen aus Headers
Von oweru im Forum C/C++Antworten: 3Letzter Beitrag: 27.06.05, 11:00





Zitieren

Login





