zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden JQuery Funktion aufrufen wenn Bedingung erfüllt

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 09.07.2009, 07:35
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.07.2009
Beiträge: 6
muella befindet sich auf einem aufstrebenden Ast
Standard JQuery Funktion aufrufen wenn Bedingung erfüllt

Hallo zusammen und einen wunderschönen guten Morgen

bin ganz neu hier und hab natürlich auch ein Problem und hoffe etwas Hilfe oder einen Tip zu bekommen .

Nun gut, ich setze also auf einer Seite JQuery ein. Dazu hab ich dann noch das Fancybox plugin.
Das Plugin und Lightbox usw. funktioniert auch alles, so rufe ich nun einen Link auf:
Code:
<script type="text/javascript">
		$(document).ready(function() { 
			$("a.fancy_test").fancybox({ 
				'overlayShow': true,
				'overlayOpacity':0.7,
				'hideOnContentClick': false,
				'centerOnScroll': true,
				'zoomOpacity':true,
				'frameWidth': 640,
				'frameHeight': 480
			}); 
		});
	</script>
Das funktioniert auch.
Aber, und nun mein Problem. Ich habe auf der Seite ein Input Feld und einen Link mit der class="fancy_test". Klickt man nun auf den Link ruft dieser im onclick eine Funktion auf, etwa so:
Code:
<a href="test.php?iframe" class="fancy_test" onclick="return pruefeInput();">Mein Link</a>
Mit der Funktion pruefeInput() wird nur das Inputfeld geprüft ob es eine Zahl ist und überhaupt gefüllt, danach wird dem Link test.php?iframe ein Parameter &wert=eingabe angehangen. Damit weiß nun die Fancybox was im Feld drin stand. Leider brauch ich die eingabe in PHP und muss vor dem Laden aus der DB daten holen, sonst wäre das ja mit top.document... kein Problem gewesen das Feld abzufragen.

Wenn nun die pruefInput() Funktion merkt dass das Feld nicht gefüllt ist wird ein False zurückgegeben und via Alert eine Fehlermeldung angezeigt.
Bei einem normalen Link wird dieser ja gestoppt wenn onclick false zurück gibt. Aber das Jquery Plugin ist da hartnäckiger. Es geht trotzdem auf

Wie kann ich da eine Bedingung einbauen dass die Fancybox auch nicht aufgeht?
Wenn ich die ja über document.ready() aufrufe merkt die ja bereits beim laden dass der Link da ist.

Nun hab ich den aufruf versucht in meiner pruefeInput() Funktion zu starten, d.h. wenn true zurückgeworfen wird, wird erst die fancybox geladen.
ungefähr so:
Code:
<script type="text/javascript">
function pruefeInput() {
   error = false;
   // ... feld abfragen und wenn nicht gesetzt wird error true
   if(error) {
       alert(errMsg);
       return false;
   } else {
       document.getElementById("link").href = newLink;

       $("a.fancy_test").fancybox({ 
	'overlayShow': true,
	'overlayOpacity':0.7,
	'hideOnContentClick': false,
	'centerOnScroll': true,
	'zoomOpacity':true,
	'frameWidth': 640,
	'frameHeight': 480
       }); 

       return true;
   }
}
</script>
Man glaubt es kaum, aber im IE6 und 7 funktioniert das einwandfrei, aber im FF3 und Safari funktioniert es leider nicht. Dort wird dann der Link nur aufgerufen ohne das Plugin zu starten.

Hat jemand eine Idee wie ich meine Bedingung einbauen kann oder so ein Plugin stoppen kann??

Über einen Tip würde ich mich freuen . Vielen Dank im Voraus!

MfG
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 09.07.2009, 10:13
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Steht was in der Fehlerkonsole?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 09.07.2009, 13:24
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.07.2009
Beiträge: 6
muella befindet sich auf einem aufstrebenden Ast
Standard

Hey,

der IE zeigt garkein Fehler an und im FF wird kein Javascript Fehler angezeigt.

Im FF führt der die Funktion ja auch aus, er gibt true zurück und folgt dem Link. Aber das plugin dazwischen greift dann nicht mehr auf die Klasse im Link zu. Komisch.
Mit Zitat antworten
  #4 (permalink)  
Alt 09.07.2009, 13:59
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

D.h. du kennst die Fehlerkonsole? Ich frag, weil viele Leute die nicht kennen. Und wenn Fx und IE ein unterschiedliches Verhalten zeigen, kann es gut sein, dass ein Fehler übersehen wird, den der Fx in der Fehlerkonsole anzeigt.
Mit Zitat antworten
  #5 (permalink)  
Alt 09.07.2009, 14:49
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.07.2009
Beiträge: 6
muella befindet sich auf einem aufstrebenden Ast
Standard

Hi,

natürlich kenn ich die Fehlerkonsole
Im FF in der Developer Toolbar hab ich eine Fehlerkonsole für CSS und JS. Wenn ich diese leere und dann die Seite lade und das Script ausführe würde bei einem Fehler dort alles reingeschrieben. Es erscheint lediglich ein CSS Fehler in der Fancybox.css, aber der steht da immer. Es erscheint kein Javascript Fehler.
Und der IE meckert ja sowieso beim kleinsten JS Fehler unten links in der Statusbar

Also es wird definitiv kein Fehler angezeigt.
Wenn ich hab den Id Namen ändere, dann hab ich nen Fehler... document.getElementById("nix") has no properties. Die Fehlerkonsole scheint also zu funktionieren

Gruß
Mit Zitat antworten
  #6 (permalink)  
Alt 10.07.2009, 16:55
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.07.2009
Beiträge: 6
muella befindet sich auf einem aufstrebenden Ast
Standard

Hi,

habs geschafft mein Problem selbst zu lösen.
Leider nicht sehr schön, aber es funktioniert.

Und zwar hab ich im Code der Fancybox selbst eine Variable gefunden die "busy" heißt, diese wird beim starten abgefragt, wenn true dann abbrechen, wenn false dann starten.
Nun, jetzt hab ich meine Funktion zum prüfen des Inputfeldes. Beim aufruf der Funktion setze ich busy auf false, wenn die Prüfung ok war, dann bleibt die false, wenn nicht, dann wird busy true und die Funktion wird nicht ausgeführt.

Im IE6,7 und FF3 unter Windows klappt es. Und im Safari und FF3 unter Mac OS X klappt es auch, ich denke das läuft

Gruß
Mit Zitat antworten
Antwort


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
jquery: button der funktion ein und auschaltet? sepp88 Javascript & Ajax 1 23.11.2009 17:19
JQUERY - Nach Formular senden weitere Funktion aufrufen sturmi2 Javascript & Ajax 1 28.10.2009 16:32
jquery - funktion automatisch ausführen M.R. Javascript & Ajax 1 03.10.2009 00:39
Mit setTimeout funktion im eigenen Objekt aufrufen PoWl Javascript & Ajax 5 11.05.2008 10:35
[PHP] Funktion zum Optimieren von CSS Floele Serveradministration und serverseitige Scripte 2 13.08.2005 10:31


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:17 Uhr.