• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[Javascript] Javascript wird nicht ausgeführt

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
Hey liebe Kollegen,

hab ein merkwürdiges Problem zurzeit. Habe eine <form> mit <inputs> diverser Art. Nun möchte ich eigentlich nichts weiter als diese bei onchange auslesen und die Summe bilden, sowie das Ergebniss drunter schreiben. Das Problem ist, dass mein Javascript scheinbar einfach nicht ausgeführt wird, dabei habe ich schon folgende Tests durchgeführt:

<input type="text" onchange="alert(this.value)"></input>
Sobald ich nun das Feld ändere und daneben klicke wird der Inhalt wie erwartet per alert ausgegeben.
Ändere ich aber onchange auf eine function, die in einer eingebundenen script Datei ist:

<input type="text" onchange="check()"></input>

function check(){
alert("Hey!");
}

passiert nichts. Natürlich hab ich als nächstes getestet, ob die Einbindung überhaupt funktioniert in dem ich foglendes in die externe Datei schrieb:

onload(alert("Hey!"));
ging einwandfrei..

Ergibt für mich grad keinen Sinn, das so ein simples mini Javascript schon so Verwirrung stiftet.. Hat jemand eine Idee?
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
weiß ja nicht was du dir von onchange erwartest, onchange schlägt erst an wenn du das textfeld mit geänderten werten verläßt. soll eine permanentabfrage kommen, dann wäre onkeyup die bessere wahl. mal davon ab ist input ein single-tag wird also <input type="irgendwas" /> geschrieben.


Code:
[INDENT]<input type="text" onchange="check(this.value)"/>
<input type="text" onkeyup="check(this.value)"/>
[/INDENT][INDENT]<script type="text/javascript">[INDENT]function check(inhalt){[INDENT]alert('geht doch! -- '+inhalt);
[/INDENT]}
[/INDENT]</script>
[/INDENT]
 

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
das weiß ich alles, hab es jetzt einfach nur schnell zur erklärung hingeklatscht. das problem ist ja wie oben beschrieben das die eine Variante funktioniert, die andere wichtige aber nicht und der Grund ist nicht ersichtlich.

onchange mit dem direkten alert funktioniert problemlos. will ich aber statt alert eine function wie auch in deinem Beispiel aufrufen, wird garnichts ausgeführt. An der Einbindung der Script Datei kann es nicht liegen, da auch dort der Test wunderbar geklappt hat.
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
also wenn du den code von mir so 1:1 in ein html dokument schmeisst, dann funktioniert der garantiert!
wie hast du denn die externe datei eingebunden? bitte einmal die exakte codezeile.
 

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
die betreffenden Zeilen (es handelt sich um php Dateien):


-------------header
<script type="text/javascript" src="script/booking.js"></script>


--------------betreffende form (nur der anfangsteil)

<form id="formpart1" action="index.php?nav=tickets#buchen" method="post" >
<label for="erwachsene">Erwachsene:</label><input type="text" id="erwachsene" name="erwachsene" onchange="check()" size="5" maxlength="5" <?php if(isset($_POST['erwachsene']) && !isset($error['s1']['erwachsene'])){ ?>
value="<?php echo $_POST['erwachsene'];?>" <?php }?> /> <?php if(isset($error['s1']['erwachsene'])){ echo $error['s1']['erwachsene']; }?>
<?php if(isset($error['s1']['preisnachlass'])){ echo $error['s1']['preisnachlass']; } ?><br />


---------booking.js
function check(){

alert('hey!');

}
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
geht 1a

nur kleiner tip der dein script übersichtlicher und damit weniger fehleranfällig machen kann,
ich würde die valueauswertung die du in php machst ausserhalb des forms in einem seperaten php-block machen
z.b.
Code:
<?php
if(isset($_POST['erwachsene']) && !isset($error['s1']['erwachsene'])){[INDENT]$formval = "value='{$_POST['erwachsene']}' ";
[/INDENT]}else{[INDENT]$formval = null;
[/INDENT]}
?>

<input type="text" <?php echo $formval ?> />
Je nach vorliebe kann man es auch anders definieren, ich persönlich halte nur nicht viel davon html und php zu sehr zu vermischen. zumal der parser ja auch immer php öffnen -> parsen -> php schliessen machen muss. und die scripte werden nicht grade pflegeleicht dadurch.

Ohne den weiteren code gesehen zu haben: Aber du kannst dir ne menge tipkram sparen wenn du dir erst die einzelnen indizies aus den superglobalen wie $_POST an normale variablen übergibst, vor allem kannst du dann schon ggf. schadhafte fakeeingaben filtern
oder einfach mittels extract($_POST) alle indizies auf einen schlag in normale variablen übergeben.
dann sparst du dir in deinen ifs den ganzen $_POST kram.
 
Zuletzt bearbeitet:

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
Ja sollte es eben, tuts aber leider bei mir nicht. Es passiert einfach nichts und ich finde keine Erklärung dafür.

Schreibe ich direkt in das input:
<input type="text" id="erwachsene" name="erwachsene" onchange="alert(this.value)" size="5" maxlength="5"

funktioniert es. die obere varaiante mit check() führt aber zu nichts :(


PS: DAnke für den PHP Tipp
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
klingt für mich nach nem cache-problem
Falls du das FF-PlugIn noch nicht hast, lad installier dir mal den Webdeveloper und da kannst du den Cache für die entwicklung deaktivieren.
Hab festgestellt das sich JS-Datein gerne wie Flashdatein ziemlich nachhaltig im cache festbeissen.
schön ist, du hast nen recht guten pseudodebugger drin der dir js und css fehler zeigt (zwei kleine zeichen ganz rechts)
 

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
Werd ich machen, danke. Hab FF mit den plugins eh, nur die seite hab ich noch nicht durchgejagt, da ich zu beschäftigt mit Verzweifeln war ;) Wenn schon die einfachsten Grundregeln nicht mehr zu funktionieren scheinen, macht einen sowas fertig ^^
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
Werd ich machen, danke. Hab FF mit den plugins eh, nur die seite hab ich noch nicht durchgejagt, da ich zu beschäftigt mit Verzweifeln war ;) Wenn schon die einfachsten Grundregeln nicht mehr zu funktionieren scheinen, macht einen sowas fertig ^^

hihi, das kenn ich;) meine Schüler sehen dann auch immer so aus

[video=youtube;eFB94Nh0gyE]http://www.youtube.com/watch?v=eFB94Nh0gyE&feature=related[/video]
 

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
Vielen Dank nochmal für die Hilfe, es war tatsächlich nichts anderes als der Cache! Heute wieder Rechner hochgefahren, ohne Codeänderung in Safari Cache geleert und plötzlich geht es....
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
Kein Problem. Kannst für nen Refresh auch cmd+Shift+r drücken dann machst du nen kompletten refresh. Und der webdeveloper und firebug sind pflichplugins für JavaScript, html und CSS. Wenn du fragen hast, dann immer raus damit.
 

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
Kurzer Frage an dich: Ist es möglich sein eigenes Javascript auf einer fremden Seite einzubinden? Nein, nicht für andere Benutzer oder zur Manipluation, sondern für mich alleine. Hintergrund:

Ich habe hier tägllich excel-Listen mit Kundendaten/Bankverbindungen. Diese muss ich leider händisch in ein Überweisungsformular der Bank eintragen (per copy&paste) und dann weiter zum nächsten... Das kann schonmal ewig dauern wenn es über hundert sind. Daher ist die Frage obe es nicht möglich wäre dies per Javascript automatisch in die passenden Felder kopieren zu lassen.
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
theoretisch ist das möglich. würde das aber eher über php machen. du kannst deine excell-listen als csv exportieren und dann ein php-script schreiben das dir die einzelnen felder ausließt. wenn excell mittlerweile sogar nen xml export beherrscht wäre es noch einfacher.

aber ein javascript von dir auf fremden seiten ist immer kritisch. theoretisch kein problem, denn javascript wird ja auf dem client ausgeführt und wohin der browser die daten schickt spielt dabei keine rolle. da ist dann nur die zieladresse des js anders.

aber wie gesagt, wenn du eine excellliste hast ist der oben genannte weg viel einfacher. du baust dir einfach ein eingabeformular mit dem du das file hochlädst, läßt php rüberbügeln und in die db schreiben und fertig ist der drops. einzige voraussetzung, die datei die du hochlädst muss immer exakt gleich aufgebaut sein von der grundlogik. also immer gleiche spaltenreihenfolge.
 

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
Da es wie gesagt beruflich ist, habe ich mit PHP da keine Chance. BLeibt also nur Javascript. wie baue ich das auf, dass es auf eine exisiterende seite zugreift?
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
du musst einfach in der action nur die zieldatei ändern an die das formular sendet. bzw bei javascript die zieladresse für den request.
ob und wie du eine csv ausschliesslich über javascript ausließt muss ich mal schauen ob ich da noch was in meinem fundus habe.

aber was passiert eigentlich mit den daten die du in ein formular eintragen willst. was ist das ziel der infos?
 

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
Es wird dem Kunden Geld überwiesen. :) kennt man ja von den üblichen Bankseiten. Privat ist das ja kein Problem, wenn man wo hin Geld überweist und die Daten in sein Onlinebanking einträgt. Wenn man aber über 100 Einträge machen muss dann wirds umständlich ;)

Eintragen... "klick zur Liste hinzufügen".... "klick auf neuer Eintrag" .. und von vorn...
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
das hab ich schon verstanden. aber was ist die zieldatenquelle. wo geht der spaß hin den du momentan per copy & paste in dein formular einträgst. wandert das in eine datenbank oder was? ist das momentane formular bereits htmlbasierend oder ist es sogar jetzt ein onlinebanking formular? wenn ja könnte das schon bedeutend schwerer werden, denn die fangen sicherlich ab über welchen kanal es reinkommt. da geht es ja auch über https verbindungen.
Bin die ganze zeit davon ausgegangen das du auf eine von dir zugängliche seite was schicken willst.
Also über js ein von excel generiertes xml bzw csv auszulesen ist kein problem, der reihe nach die einzelnen datensätze abzuschicken auch nicht, nur der empfänger muss dabei auch mitspielen.
Die systeme sind in der regel soweit abgesichert das es nicht funktioniert, sonst könnte ich ja binnen weniger minuten hier das forum sprengen;)
Frag mal was das für ein aufriss ist von externen seiten z.b. zu twittern. da muss deren api angezapft werden, sich authorisiert usw.
 

Raziel1

Raisin Rouge
Registriert
24.10.09
Beiträge
1.175
Ja ist wie gesagt eine online banking Seite. Es wäre ja schon toll wenn man in excel oder so nur die daten auswählt und sie autoamtisch ins formular wandern. klicken kann ich dann schon selbst. Aber so minimiere ich wengistens die zeit da ich nicht pro kunde 5 mal kopieren müsste, sondern ein klick reicht und einer zum bestätigen

Darum auch die Frage ob man JS schreiben kann, das beim betrachten einer fremden Seite wirkt. ich kann logischerweise keien Dateien oder Code in die Seite schreiben. Vielleicht gibts aber auch eine ganz andere lösung in Fprm eines Widgets, addons oder so für firefox etc etc
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
würde mir aus dem stehgreif nicht einfallen. was aber ggf abhilfe schaffen könnte sind tools wie quicken. die sind speziell für onlinebanking gemacht und daraus sollte sich denke ich auch ne "massenüberweisung" machen lassen.