• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Probleme mir JQuery

Status
Für weitere Antworten geschlossen.

supertobs

Mitglied
Hallo,
ich habe ein Problem mit JQuery (Dialog funktion), dass ich nun schon seit einigen stunden nicht gelöst bekomme.

Mein Problem sieht so aus:

Ich will, dass wenn man ein Fenster öffnet, er ein von mir definierte Javascript function ausführt.

ICh habe es schon mit "open" probiert doch irgendwie funktioniert dass nicht.
Immer, wenn ich die Seite neu Lade, führter die Funktion
sofort aus.

Die anleitung giebts hier: jQuery UI - Dialog Demos & Documentation
"open" ist zu finden unter : Evenst -> open

Ich glaube, dass die lösung ganz einfach ist, ich aber nicht darauf komme.


MfG

Tobi

P.S Google hab ich schon benutzt.
 
Da du noch keine Antwort von jemandem hast, der die Beschreibung zu verstehen scheint:

Könntest du ein Beispiel posten, was du bislang hast?
 
Das hab ich:
Ich hab einen Link, auf den man klickt, wenn man das fenster öffnen will.
wenn das fenster geöffnet wird, soll eine von mir definierte javascript function ausführen.
Wenn man das Fenster über das x schliesst, soll er wieder eine Javascript-function ausführen.

Das suche ich:
Eine Möglichkeit diese Funktionen beim öffnen und schließen des fensters aufzurufen.
Bild im Anhang

Hier das Bild:
Unbenannt.jpg

Hoffe diese beschreibung ist klarer :D
 
Zuletzt bearbeitet:
Wo denn?
Dort steht nur "open" was irgendwie nicht funktioniert, und "beforeclose" und "close" was auch nicht funktioniert.
Mir ist aber auch aufgefallen, dass es auch wen ich haskfshaklfsh vor dem : eingebe, dass er die Funktion trotzdem sofort ausführt.
 
Ich hab es gerade nocheinmal ausprobiert und ... ein Wunder!
Es funktioniert.
Doch jetzt tauch leider immer wieder folgender Fehler auf:

Fehler: uncaught exception: Syntax error, unrecognized expression: #[object HTMLDivElement]

EDIT:
Gerade habe ich etwas bemerkt, er führt sie immer noch sofort aus.
Der obrige fehler ist immer noch da.
 
Zuletzt bearbeitet:
Les doch mal deine Beiträge und versuch dir vorzustellen du bist wir. Ich hab keinen blassen Schimmer was du machst und wie dein Code aussieht, trotzdem erwartest du das jemand dir helfen soll? Ohne hellseherische Fähigkeiten ist das unmöglich.

Oder um wenigstens den versuch einer Antwort zu starten: Du machst etwas falsch.
 
Der Code is folgendermaßen aufgebaut:
Ich habe eine index.php Die alles includet.
Diese Datei includet Folgende Dateien:

Code:
<?php
include('includes.php');

if($_GET['login']==1){echo'<embed src="musik/loginton.mp3" autostart="true" loop="false" hidden="true">';}
if(isLogin()==false){
echo'<style type="text/css">
body{
background-image:url("bilder/backgroundimage.png");
}
</style>
';
echo' <style type="text/css">
body{margin-left: auto;
    margin-right: auto;

line-height:250%;width:auto;margin:1em 20%;text-align: left;
</style>';
$logout=$_GET['logout'];
if($logout==1) {
echo'<embed src="musik/logoutton.mp3" autostart="true" loop="false" hidden="true">';}
echo'<link rel="stylesheet" type="text/css" href="style.css" />';
echo'<form action="login.php" method="POST">
<div class="text"><table><tr><td>'.$spr[Username].':<input name="username" type="text"></td></tr>
                               <tr><td>'.$spr[Password].':<input name="password"  type="password"></td></tr>
                               <tr><th colspan="2"><input  type="submit" value="Login"></th></tr></table>
                               </div>
                               </form>';
} else {

echo'<title>PHP-OS '.getUsername().'</title>';
echo"
<style type='text/css'>
            /*demo page css*/
            div.windows{ font: 62.5% 'Trebuchet MS', sans-serif; margin: 50px;}
            .demoHeaders { margin-top: 2em; }
            #dialog_link {padding: .4em 1em .4em 20px;text-decoration: none;position: relative;}
            #dialog_link span.ui-icon {margin: 0 5px 0 0;position: absolute;left: .2em;top: 50%;margin-top: -8px;}
            ul#icons {margin: 0; padding: 0;}
            ul#icons li {margin: 2px; position: relative; padding: 4px 0; cursor: pointer; float: left;  list-style: none;}
            ul#icons span.ui-icon {float: left; margin: 0 4px;}
        </style>";    


echo'
<body onload="updateTime()">';

echo'
<div style="display:none;" id="windowsself">';
include('generateWindow.php');
echo'</div>
';
include('generateWindowFunctions.php');
include('generateDesktop.php');
echo'
<div id="startsite" style="display:none;" class="startsite"> <div class="userimg"><img src="bilder/ProfilepictureRound.png"></div><div class="searchresults">searchresults</div><input type="text" class="searchbox"><div class="quicklinkbar"><div class="quicklink"><a href="javascript:openSystem()">'.$spr['quicklinksSystemSettings'].'</a></div></div><div class="startSiteFunctions"><a class="logout" href="logout.php">'.$spr[startSiteLogout].'</a></div></div>
<div class="leiste"><a class="leistebutton" href="javascript:showStartSite()" ><img src="bilder/start.png"><a class="leistebutton" href="index.php" ><img src="bilder/reload.png"></a><div class="windowsquareLeiste">';include('generateWindowBoxen.php'); echo'</div><div class="time" id="time"></div></div></body>';
}
GenerateDesktop
Hohl alle Desktopicoons aus der Datenbank und zeigt sie an.
Code:
<?php
/* Ehemalig
echo'
<img class="background" src="system/user_backgrounds/'.getUsername().'.jpg">

';
*/
echo'<style type="text/css">
body{
background-image:url("system/user_backgrounds/'.getUsername().'.jpg");
}
</style>
';
$desktopSQL=mysql_query("SELECT * FROM desktop");
$desktopAnzahl=mysql_num_rows($desktopSQL);
$found=0;
$searchid=0;
while($desktopAnzahl!=$found){
$searchid++;
$desktopWhileSQL=mysql_query("SELECT * FROM desktop WHERE positionID = '".$searchid."'");
$desktopRow=mysql_fetch_array($desktopWhileSQL);
if($desktopRow[ID]!=''){
echo'
<div class="desktopicoon">
<a class="desktop"  href="'.$desktopRow['function'].'"><table class="desktop">
<tr><th><img src="bilder/apps/'.getDesktopIMGSize().'/'.$desktopRow[picture].'"></th></tr>
<tr><td class="name">'.$spr['desktop'.$desktopRow[namevariable]].'</td></tr></table></a></div>';
$found++;
}

}

//Eigene Desktop Icoons
$desktopSQL=mysql_query("SELECT * FROM owndesktop");
$desktopAnzahl=mysql_num_rows($desktopSQL);
$found=0;
$searchid=0;
while($desktopAnzahl!=$found){
$searchid++;
$desktopWhileSQL=mysql_query("SELECT * FROM owndesktop WHERE positionID = '".$searchid."'");
$desktopRow=mysql_fetch_array($desktopWhileSQL);
if($desktopRow[ID]!=''){
echo'
<div class="desktopicoon">
<a class="desktop"  href="'.$desktopRow['function'].'"><table class="desktop">
<tr><th><img src="bilder/apps/'.getDesktopIMGSize().'/'.$desktopRow[picture].'"></th></tr>
<tr><td class="name">'.$desktopRow[namevariable].'</td></tr></table></a></div>';
$found++;
}

}
GenerateWindows
Holt alle fenster aus der Datenbank
Code:
<?php
$windowsSQL=mysql_query("SELECT * FROM windows");
$windowsAnzahl=mysql_num_rows($windowsSQL);
$found=0;
$searchid=0;

while($windowsAnzahl!=$found){
$searchid++;
$windowsWhileSQL=mysql_query("SELECT * FROM windows WHERE ID = '".$searchid."'");
$windowsRow=mysql_fetch_array($windowsWhileSQL);
if($windowsRow[ID]!=''){
echo'
<div id="'.$windowsRow[openID].'">'.$windowsRow[content].'</div>';
$found++;
}

}
//Eigene Fenster
$windowsSQL=mysql_query("SELECT * FROM ownwindows");
$windowsAnzahl=mysql_num_rows($windowsSQL);
$found=0;
$searchid=0;

while($windowsAnzahl!=$found){
$searchid++;
$windowsWhileSQL=mysql_query("SELECT * FROM ownwindows WHERE ID = '".$searchid."'");
$windowsRow=mysql_fetch_array($windowsWhileSQL);
if($windowsRow[ID]!=''){
echo'
<div id="own'.$windowsRow[openID].'">'.$windowsRow[content].'</div>';
$found++;
}

}
GenerateWindow Functions
Erstellt die Functionen zu den Fenstern

Code:
<?php
$windowsSQL=mysql_query("SELECT * FROM windows");
$windowsAnzahl=mysql_num_rows($windowsSQL);
$found=0;
$searchid=0;
echo"<script type='text/javascript'>
            $(function(){
                // Datepicker
                $('#datepicker').datepicker();";
while($windowsAnzahl!=$found){
$searchid++;
$windowsWhileSQL=mysql_query("SELECT * FROM windows WHERE ID = '".$searchid."'");
$windowsRow=mysql_fetch_array($windowsWhileSQL);
if($windowsRow[ID]!=''){
//open: openWindow(".$windowsRow[openID].",".$windowsRow[boxID].")
echo"
$('#".$windowsRow[openID]."').dialog({
                autoOpen: ".$windowsRow[autoOpen].",
                title: '".$spr['window'.$windowsRow[windowName]]."',
                width:600,
                zIndex: 1
                
                $windowsRow[sonst]";
if($windowsRow[OKButtonText]!='' OR $windowsRow[CancelButtonText]!=''){
echo', 
buttons: {';
    if($windowsRow[OKButtonText]!=''){
    echo"'".$spr[buttonOK]."': function() {
    ".$windowsRow[OKButtonFunction]."
         }";
    
    }
if($windowsRow[CancelButtonText]!=''){
    echo",'".$spr[buttonCancel]."': function() {
    ".$windowsRow[CancelButtonFunction]."
         }";
    
    }    
echo'}';    }
echo"                
                
                });";
$found++;
}

}


//Eigene Fenster
$windowsSQL=mysql_query("SELECT * FROM ownwindows");
$windowsAnzahl=mysql_num_rows($windowsSQL);
$found=0;
$searchid=0;

while($windowsAnzahl!=$found){
$searchid++;
$windowsWhileSQL=mysql_query("SELECT * FROM ownwindows WHERE ID = '".$searchid."'");
$windowsRow=mysql_fetch_array($windowsWhileSQL);
if($windowsRow[ID]!=''){
echo"
$('#own".$windowsRow[openID]."').dialog({
                autoOpen: ".$windowsRow[autoOpen].",
                title: '".$windowsRow[windowName]."',
                width:600,
                zIndex: 1,
                maxHeight: 400,
                
                $windowsRow[sonst]";
if($windowsRow[OKButtonText]!='' OR $windowsRow[CancelButtonText]!=''){
echo', 
buttons: {';
    if($windowsRow[OKButtonText]!=''){
    echo"'".$windowsRow[OKButtonText]."': function() {
    ".$windowsRow[OKButtonFunction]."
         }";
    
    }
if($windowsRow[CancelButtonText]!=''){
    echo",'".$windowsRow[CancelButtonText]."': function() {
    ".$windowsRow[CancelButtonFunction]."
         }";
    
    }    
echo'}';    }
echo"                
                
                });";
$found++;
}

}




echo"                
            
$('#editFile').dialog({
                autoOpen: false,
                title: '".$spr['windowEditFile']."',
                width:600,
                
                zIndex: 1});
                

});                        
            
        </script>";


Problem steht oben
 
Toll, könntest du das auch kürzen auf das worauf es ankommt?
Und warum zeigst du uns PHP Code ich dachte es wäre eine Javascript Frage.
 
Also der Inhalt der generatWindowFunctions.php (Gekürtzt mit eineigen PHP variablen)

Kann sein, das einie Klammern zu viel das sind, einfach überlesen
Platzhalter für von PHP gefüllte Werte #Platzhalter#
Code:
<script type='text/javascript'>


//open: openWindow(".$windowsRow[openID].",".$windowsRow[boxID].")

$('#[B]#Hier wird der Fenstertitel eingesetzt#[/B]').dialog({
                autoOpen: false,
                title: [B]#Hier wird Titel eingesetzt#[/B],
                width:600,
                zIndex: 1
                
               
[B]#Buttons werden erstellt#[/B]
, 
buttons: {';

   'OK': function() {
    [B]#Hier wird die Buttonunktion eingesetzt#[/B]
         }";
    
    }

    
    }    
}   }
              
                
                });";



//Eigene Fenster
[B]#Sind nicht wichtig#[/B]  
        </script>";
Folgendes Sollte er eig. ausführen, wenn das Fenster geöffnet wird doch dies macht er immer sofort am anfang und dann kommt es immer gleich diese Fehlsermeldung:

Vereinfacht: open: openWindow(#WindowID#,#BoxID#)

WindowID und BoxID werden durch PHP gefüllt (sind PHP variablen)
Orginal: open: openWindow(".$windowsRow[openID].",".$windowsRow[boxID].")

Hoffe der Code ist übersichtlicher
 
wie gesagt du hast keine PHP Frage, also ist dein PHP Code unrelevant, für ein JS Problem ist nur relevant was im Browser ankommt.

Ich sehe nicht wo du das auf der Doku beschriebene eingesetzt hast. Ist der Rückgabewert von openWindow() eine Funktionsreferenz?
 
Oh sorry hab ich vergessen einzusetzen:
Code:
$('#[B]#Hier wird der Fenstertitel eingesetzt#[/B]').dialog({
                autoOpen: false,
                title: [B]#Hier wird Titel eingesetzt#[/B],
                width:600,
                zIndex: 1,
                [U]open: openWindow([B]#WindowID#[/B],[B]#BoxID#[/B])[/U]
                
               
[B]#Buttons werden erstellt#[/B]
, 
buttons: {';

   'OK': function() {
    [B]#Hier wird die Buttonunktion eingesetzt#[/B]
         }";
    
    }

    
    }    
}   }
              
                
                });";


Das neue ist unterstrichen
 
So rufst du die Funktion openWindow() auf und übergibst den Rückgabewert dem open Handler. Das ist nicht das was in der Doku steht. Es sei denn die Funktion openWindow() gibt eine Funktionsreferenz als Rückgabwert zurück. Schau dir doch mal das Beispiel in der Doku an
 
Ich fasse die Anleitung folgendermaßen auf:

open: function(event, ui) { ... }

open giebt an, dass er folgendes ausführen soll, wenn das fenster geöffnet wird
function, ist die function die man selbst definieren kann.
(event, ui) sind die Parameter
 
Nein, das faßt du falsch auf.

function ist ein Schlüsselwort, das bedeutet, dass du ein closure definieren kannst, genau wie du es auch in deinem Code schon machst, bei dem OK Button.

Du kannst aber auch die Referenz auf eine Funktion verwenden, z.b. so open: openWindow ohne Klammer.

EDIT: oder deine Funktion gibt eine Funktionsreferenz zurück.
 
Keine Ahnung das scheinen ja nur Platzhalter zu sein, aber du kannst in der function deine Funktion normal mit Parameter aufrufen.

open: function(e, ui) {
openWindow(#WindowID#,#BoxID#);
}

Wobei ich nicht weiß ob du hier wirklich die ID brauchst, die steckt wahrschienlich schon in dem Parameter ui der der Callback funktion übergeben wird
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben