Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

abfrage falls das form ausgefüllt wurde und man möchte auf eine andere seite wechseln

Frage Entwicklung JavaScript

Mitglied: scriptkiddy

scriptkiddy (Level 1) - Jetzt verbinden

02.08.2008, aktualisiert 10.08.2008, 6281 Aufrufe, 13 Kommentare

Hallo zusammen,

Ich habe das Problem das ich derzeit ein Backend in php programmiere bei dem es unter anderem auch die Möglichkeit gibt
Newseinträge zu verfassen. Jetzt ist es schon öfter passiert das das Form ausgefüllt wurde doch dann ohne auf speichern zu klicken
zu einem andern menüpunkt navigiert wurde (ja ich weiß ... selber schuld :D) trozdem würde ich gerne dort eine Abfrage einbauen ob man
die seite trozt das man etwas in das Form eingetragen hat verlassen möchte (soll ja auch ma vorkommen).

Bisher habe ich nicht wirklich Ahnung von Javascript und mit php kann ich das nicht wirklich umsetzen da dies ja serverseitig ist und ergo dort das Form eh abgeschikt sein muss um darauf zuzugreifen. Ich habe schon teilweise sachen gefunden bei denen ich dann die links mit einem onklick ereignis ausstatten sollte... ich denke zwar das dies ja machbar ist jedoch weiß ich nicht wie ich es umsetzte das nur wenn ich auf der newsseite bin und dann wechsle die abfrage kommt sonst würde das ja extrem nerven...

Grüße

BlackScript
Mitglied: 55283
03.08.2008 um 11:20 Uhr
testbeitrag1337testbeitrag1337testbeitrag1337testbeitrag1337testbeitrag1337testbeitrag1337
Bitte warten ..
Mitglied: scriptkiddy
03.08.2008 um 12:34 Uhr
auch für Leute die einen Text nicht erfassen können ...

if(im News verfassen Formular im Textbereich etwas eingetragen && Form nicht abgeschickt && User möchte auf eine andere Seite wechseln ){
frage: möchten sie die seite wirklich verlassen ?}
else
{
Ohne Abfrage wechseln
}
Bitte warten ..
Mitglied: Arano
05.08.2008 um 22:11 Uhr
Letzteres finde ich wirklich überflüssig !

Da es sich eh um Javascript handelt das die Prüfung durchführen soll:
Bind auf deiner Newsseite ein Script ein, das die Links der Navigation um ein "onclick"-Event erweitert.

Ich poste dir noch mal mein Script, mit dem ich meine Teaser
(<div id="titel_1">Titelzeile</div>
<div id="text_1">Textbox</div>)
dynamisch mache:
01.
  /*############################# 
02.
  ###### makeTeaserDynamic ###### 
03.
  #############################*/ 
04.
  /** fuegt den verschiedenen elementen dessen ids in IDS uebergeben werden  **/ 
05.
  /** eigenschaften zu damit sie als klickbare, auf- und zuklapbare elemente **/ 
06.
  /** erkennbar sind. ausserdem bekommt die titelzeile eine onclick          **/ 
07.
  /** eigenschaft die die funktion toggleTeseer() aufruft                    **/ 
08.
  function makeTeaserDynamic(IDS){ 
09.
           // macht einen einfachen statischen teaser zu einen dynamischen auf- und zuklappbaren 
10.
           // mit jedem teaser (title- und textblock ids) mach... 
11.
           for(var x=0; x<IDS.length; x++){ 
12.
               // ...definiere die auszufuehrende onclick funktion mit ihren benoetigten parametern (teasertitle und -text id) 
13.
               var fnc    = "toggleTeaser('"+IDS[x][0]+"','"+IDS[x][1]+"');"; 
14.
               // ...ermittel den zu bearbeitenden teasertitle ueber seine id 
15.
               var teaser = document.getElementById(IDS[x][0]); 
16.
               // ...fuege dem teaser title die onclick funktion zu (ich wuerds ja in die with()-schleife setzen, aber das funktioniert nicht !?) 
17.
               teaser.onclick = new Function (fnc); 
18.
               // ...fuege dem teasertitle folgende neuen werte zu: 
19.
               with(teaser){ 
20.
//                    onclick                  = new Function (fnc);                    // - die onclick funktion 
21.
                    title                    = "Klicken zum oeffnen oder schliessen"; // - den titeltxt 
22.
                    style.cursor             = "pointer";                             // - den mauszeiger in eine hand umwandeln (um klickbar zu signalisieren) 
23.
                    style.backgroundImage    = "url(./images/arrowdn.gif)";           // - ein hintergrundbild das den status anzeigt (auf / zu) 
24.
                    style.backgroundRepeat   = "no-repeat";                           // - das hintergrundbild nicht wiederholen 
25.
                    style.backgroundPosition = "2px 50%";                             // - das hintergrundbild positionieren 
26.
                    style.paddingLeft        = "10px";                                // - textabstand links zum rahmen (um den text nicht ueber dem hintergrundbild zu haben) 
27.
                    style.width              = "708px";                               // - weise dem teasertitle eine neue breite zu (eine abz&uuml;glich des padding-wertes) 
28.
29.
               // soll dieser Teaser schon geschlossen werden 
30.
               if(IDS[x][2]){ 
31.
                  // ja, schliesse teaser 
32.
                  toggleTeaser(IDS[x][0],IDS[x][1]); 
33.
34.
35.
           }
Das Array in dem ich die Ids der Teaser übergebe sieht so aus:
01.
var IDS = new Array( 
02.
      new Array("title_1","text_1",1), 
03.
      new Array("title_12","text_12",1), 
04.
      new Array("title_34","text_34",0) 
05.
);
Ob du das mit den IDs auch so machst, oder du die Link jedesmal rausfilterst bleibt die überlassen und muss natürlich angepasst werden.
(Soll ja auch nur ein Beispiel sein ;) )

Viel Erfolg
Arano
Bitte warten ..
Mitglied: scriptkiddy
08.08.2008 um 16:27 Uhr
Hi Arano...

ich versteh leider nicht ganz was deine teaser script mit der eigendlich gedachten funktion von mir zu tun hat ...
aber ich meine ich verstehe eh nicht viel von javascript vielleicht kannst du mir nochmal genauer an einem beispiel erklären wie ich das in meine seite einbauen kann.



Grüße

Patrick
Bitte warten ..
Mitglied: Arano
09.08.2008 um 18:18 Uhr
Naja, wie gesagt, es sollte nur ein Beispiel sein !
Du möchtest, das wenn man auf etwas klickt ein weiteres Javascript ausgeführt wird.
Und mein Teaserscript verwend ich um bei dem Klick auf einem Element ein anderes Script ausführen zu lassen.

Probier mal das:
01.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
02.
    "http://www.w3.org/TR/html4/strict.dtd"> 
03.
<html> 
04.
 <head> 
05.
  <script type="text/javascript"> 
06.
   <!-- 
07.
    /*########################### 
08.
    ###### extendNaviLinks ###### 
09.
    ###########################*/ 
10.
    /** Erweitert die Links innerhalb des angegebenen Containers mit einem   **/ 
11.
    /** onclick-Event das beim ausloesen ein Formular auf Eingaben pruefen   **/ 
12.
    /** soll.                                                                **/ 
13.
    function extendNaviLinks(linkName){ 
14.
     // der container der die Links enthaelt 
15.
     var naviLinks = document.getElementsByName(linkName); 
16.
     // mit jedem link... 
17.
     for(x=0; x<naviLinks.length; x++){ 
18.
      // ...speichere die zielurl des links in der variable "url"... 
19.
      var url = naviLinks[x].href; 
20.
      // ...erweitere den link um ein onclick-Event... 
21.
      naviLinks[x].onclick = new Function("checkForm('"+url+"');"); 
22.
      // ...ersetze die url des links mit einem void-script. 
23.
      naviLinks[x].href = "javascript: void(0);"; 
24.
25.
    } // ende fnc extendNaviLinks 
26.
     
27.
    /*##################### 
28.
    ###### checkForm ###### 
29.
    #####################*/ 
30.
    /** ueberprueft die eingabefelder des formulars auf eingaben, enthalten  **/ 
31.
    /** die felder eingeben, gibt sie "false" zurueck, andernfalls leitet es **/ 
32.
    /** auf die urspruengliche url weiter.                                   **/ 
33.
    function checkForm(url){ 
34.
     // das formular dessen eingabefelder geprueft werden sollen 
35.
     var form = document.getElementsByName('foermchen'); 
36.
     // wenn mindestens ein eingebefeld eingaben enthaelt... 
37.
     if(form[0].title.value!='' || 
38.
        form[0].text.value !=''){ 
39.
      // ...gebe warnung aus und... 
40.
      alert('Das Formular enthaelt ungespeicherte Eingaben!'); 
41.
      // ...beende funktion. 
42.
      return false; 
43.
44.
     // wenn doch alle eingabefelder leer sind, leite auf zielurl weiter 
45.
     window.location = url; 
46.
    } //ende fnc checkForm 
47.
   --> 
48.
  </script> 
49.
 </head> 
50.
 <body> 
51.
  
52.
  <!-- die navigation, enthalten in ALLEN dokumenten --> 
53.
  <a href="seite_eins.html" name="navilinks">link eins</a><br> 
54.
  <a href="seite_zwei.html" name="navilinks">link zwei</a><br> 
55.
  <a href="seite_drei.html" name="navilinks">link drei</a><br> 
56.
  <a href="seite_vier.html" name="navilinks">link vier</a> 
57.
   
58.
  <!-- ein javascript und ein formular, enthalten nur AUF EINER seite --> 
59.
  <script type="text/javascript"> 
60.
   <!-- 
61.
    extendNaviLinks('navilinks'); 
62.
   --> 
63.
  </script> 
64.
   
65.
  <br><br><br> 
66.
   
67.
  <form action="" method="POST" name="foermchen"> 
68.
   <fieldset> 
69.
    <legend>Formular</legend> 
70.
    <input type="text" name="title" value=""><br> 
71.
    <textarea name="text"></textarea><br> 
72.
    <input type="submit" value="Speichern"> 
73.
   </fieldset> 
74.
  </form> 
75.
   
76.
 </body> 
77.
</html>
Schönes Wochenende noch
Arano
Bitte warten ..
Mitglied: scriptkiddy
09.08.2008 um 23:53 Uhr
ja , klasse jetzt verstehe ich wie du das gemeint hast .... mein Problem ist nur ich habe das script jetzt in meinem Backend integriert
und habe dort eben getestet es funktioniert auch soweit alles das einzige problem ist bei der headline welches nur ein textfeld ist funktioniert das script einwandfrei jedoch bei der textarea die einen wysiwyg edior enthält springt er nicht darauf an ... die variablen im script welche geprüft werden hab ich bereits angepasst ... aber er reagiert einfach nicht darauf ... ne idee wie ich das beheben kann ?


Grüße

BlackScript
Bitte warten ..
Mitglied: Arano
10.08.2008 um 11:31 Uhr
Nee, nicht wirklich, ich kenne ja deinen Quelltext nicht !

Aber du könntest dir mit einem "alert()" verschiedene Werte ausgeben lassen und so, evtl, den richtigen "Weg" finden.

~Arano
Bitte warten ..
Mitglied: scriptkiddy
10.08.2008 um 12:07 Uhr
Hi Arano,

ja ich bin da auch auf die idee gekommen ... jedoch scheint der einfach den wert der textarea nicht auslesen zu können.
Ich habe den js teil erstma so geändert.
01.
if(form[0].headline.value!='' || form[0].text.value !=''){ 
02.
      // ...gebe warnung aus und... 
03.
      alert('Das Formular enthaelt ungespeicherte Eingaben!'); 
04.
	  alert(form[0].text.value); 
05.
	  alert(form[0].headline.value); 
06.
      // ...beende funktion. 
07.
      return false; 
08.
     }
Die Value der Headline zeigt er so richtig an .. dort funktioniert das script ja auch jedoch in der Textarea kann ich eintragen was ich will die value bleibt auf leer...

Hier den Quellcodeteil bei dem ich dein script eingebaut habe..

01.
<script type="text/javascript"> 
02.
   <!-- 
03.
    extendNaviLinks('navilinks'); 
04.
   --> 
05.
  </script> 
06.
<script type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script> 
07.
<script type="text/javascript"> 
08.
	tinyMCE.init({ 
09.
	convert_urls : false, 
10.
		// General options 
11.
		mode : "textareas", 
12.
		theme : "advanced", 
13.
		plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", 
14.
 
15.
		// Theme options 
16.
	theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect", 
17.
	theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,preview,|,forecolor,backcolor", 
18.
	theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,charmap,iespell,advhr,|,print,|,ltr,rtl", 
19.
	theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,visualchars", 
20.
	theme_advanced_toolbar_location : "top", 
21.
	theme_advanced_toolbar_align : "left", 
22.
	theme_advanced_statusbar_location : "bottom", 
23.
		theme_advanced_resizing : false, 
24.
		theme_advanced_path : false, 
25.
 
26.
		// Drop lists for link/image/media/template dialogs 
27.
		template_external_list_url : "lists/template_list.js", 
28.
		external_link_list_url : "lists/link_list.js", 
29.
		external_image_list_url : "lists/image_list.js", 
30.
		media_external_list_url : "lists/media_list.js", 
31.
		<!-- /TinyMCE --> 
32.
	}); 
33.
</script> 
34.
 
35.
<form name="post" method="post" > 
36.
  <table width="100%" border="0" cellspacing="1" cellpadding="2" bgcolor="$border"> 
37.
    <tr>  
38.
      <td class="title" align="center" bgcolor="$bghead">Neue News verfassen</td> 
39.
    </tr> 
40.
    <tr>  
41.
      <td class="title" align="left" bgcolor="$bghead">Headline: <input type="text" width="60%" size="60%" name="headline"></td> 
42.
    </tr> 
43.
    <tr>  
44.
      <td class="title" align="left" bgcolor="$bghead"><input type="checkbox" name="public">News ver&ouml;ffentlichen</td> 
45.
    </tr> 
46.
        <tr>  
47.
      <td class="title" align="left" bgcolor="$bghead"><input type="checkbox" name="important">News hervorheben</td> 
48.
    </tr> 
49.
    <tr>  
50.
      <td bgcolor="$pagebg"></td> 
51.
    </tr> 
52.
                  <tr>  
53.
      <td class="title" style= "background-color:#FF0000; text-decoration:blink;" align="center" bgcolor="$bghead"><img src="./images/exclamation.png"> <input id="submit" type="submit" name="submit" value="News speichern"> <img src="./images/exclamation.png"></td> 
54.
    </tr> 
55.
    <tr>  
56.
      <td bgcolor="$bg1"><table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="formtable"> 
57.
          <tr>  
58.
            <td colspan="4"><br> <textarea id="elm1" name="text" rows="40" style="width:100%;"></textarea></td> 
59.
          </tr> 
60.
        </table> 
61.
      </td> 
62.
    </tr> 
63.
  </table> 
64.
</form>
Ich werde weitersuchen und hoffe das du vielleicht eine idee dazu hast ...

Grüße

BlackScript
Bitte warten ..
Mitglied: Arano
10.08.2008 um 13:00 Uhr
Ja, aber das liegt an TinyMCE !

Ich kenne es nicht, habe nur gerade etwas auf deren Website (bei den Beispielen) herumgespielt und weiss nun, das wenn Javascript aktiviert ist die Eingaben nicht in der Textarea getippt werden !
Daher ist deine Textarea auch immer leer.
Wenn du das Prüfen möchtest, dann belege eine Textarea mit einem Text, dieser wird dann auch in TinyMCE angezeigt. Wenn nun etwas dazu getippt wird und anschließende der Inhalt der Textarea per "alert()" ausgegeben wird, entspricht er der Vorbelegung der Textarea ohne die Änderungen !

Welches Feld bzw. Element du nun prüfen musst, konnte ich nicht heraus finden, da musst du jetzt mal selber weiter gucken.


Aber nicht vergessen, Das Javascript das die Prüfung durchführt muss nun auch erweitert werden denn wenn Javascript aktivier wird, muss Element "A" überprüft werden - andernfalls Element "B" !
"A" = Eingabefeld von TinyMCE
"B" = Sandart Textarea

Gruß Arano
Bitte warten ..
Mitglied: scriptkiddy
10.08.2008 um 13:18 Uhr
ja ich habe mitlerweile auch rausgefunden das es daran liegt google spukt dazu auch mehrere sachena us jedoch nirgends gescheite Vorschläge.. mitlerweile bin ich auch daran mich durch die api zu wühlen um vielleicht rauszufinden wie ich auf den inhalt der textarea zugreifen kann... http://wiki.moxiecode.com/index.php/TinyMCE:API ich meine tinymce liest das doch auch aus und zeigt das dann an ... irgendwo müssen doch die eingaben bleiben da ich sie ja nach dem absenden auch wieder per post unter der normalem namen der textarea abrufen kann -.- gerade dort in der textarea ist es wichtig das das funktioniert


Grüße

BlackScript


EDIT:

Ich glaube unter http://wiki.moxiecode.com/index.php/TinyMCE:Configuration bei den callbacks kann man vielleicht was damit anfangen ..... vielleicht kannst du dir das ja mal anschaun du verstehst da sicher mehr als ich

ERNEUTER EDIT :D
ich hab jetzt mal was gefunden... und zwar die isDirty() funktion von tinymce dieser funktioniert auch ... jedoch will der mir jetzt das so nicht mehr mit dem normalen textfeld machen... also
jetzt grade umgekehrt wenn ich was in die textarea reinschreib meldet er auch aber wenn ich jetzt zum beispiel die headline setze dann nich ... hier mal der code

01.
<script type="text/javascript"> 
02.
window.onbeforeunload = function(){ 
03.
if (tinyMCE.activeEditor.isDirty() || document.form[0].headline.value!=''){ 
04.
 return "Sie haben das Formular noch nicht abgeschickt. Wenn Sie diese Seite verlassen gehen Ihre Eingaben verloren.";} 
05.
06.
</script> 
07.
währe nett wenndu mir sagen könntest wieso das dann so nich geht :D
Bitte warten ..
Mitglied: Arano
10.08.2008 um 14:22 Uhr
Joa, das mag schon sein, aber es ist nicht gerade so als das ich Lust hät die Arbeit für andere zu erledigen.

Ich habe da aber trotzdem etwas gefunden was dir weiter helfen sollte: http://tinymce.moxiecode.com/punbb/viewtopic.php?id=12616

~Arano
Bitte warten ..
Mitglied: scriptkiddy
10.08.2008 um 14:37 Uhr
naja ich meine das mit der textarea funktioniert so wie ich es oben geschrieben habe nur das zugreifen auf das textfeld names headline welche ja vorher funktioniert hat hatte nicht mehr funktioniert ... jetzt hab ich es hinbekommen nachdem ich form[0] durch den namen desforms ersetzt habe der funktionierende Code ist jetzt:

01.
<script type="text/javascript"> 
02.
window.onbeforeunload = function(){ 
03.
 
04.
	if (tinyMCE.activeEditor.isDirty() || document.post.headline.value!='') 
05.
06.
 		return "Sie haben das Formular noch nicht abgeschickt. Wenn Sie diese Seite verlassen gehen Ihre Eingaben verloren."; 
07.
08.
	 
09.
10.
</script>
welchen ich einfach direkt über die init von tiny mce gesetzt habe... und wegen dem arbeit für andere machen ich hatte dich ja nur gefragt was an dem code den ich gepostet habe so nicht stimmen könnte dies hatte nicht damit zu tun das du die arbeit machen solltest sondern einfach nur mithilfe deines wissens über js vielleicht etwas findest was falsch ist was ich als anfänger ja nicht sehe....
Trozdem danke für deine Hilfe...


Grüße

BlackScript
Bitte warten ..
Mitglied: Arano
10.08.2008 um 15:02 Uhr
Ja, gern geschehen :D

Deinen zweiten Edit ("ERNEUTER EDIT") hatte ich da noch nicht gesehen ;)

Schönen Tag noch
~Tobias
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...