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:<input type="text" onchange="check(this.value)"/> <input type="text" onkeyup="check(this.value)"/><script type="text/javascript">function check(inhalt){</script>alert('geht doch! -- '+inhalt);}
Ergebnis 1 bis 10 von 20
- 24.11.2010, 08:48 #1Stina Lohmann
Themenstarter
- Registriert
- 10.2009
- Beiträge
- 1.023
Javascript wird nicht ausgeführt
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?
- 24.11.2010, 08:57 #2Dülmener Rosenapfel
- Registriert
- 03.2007
- Ort
- Bad Bevensen aka der A**** der Heide
- Alter
- 34
- Beiträge
- 1.665
Vollzeitfalschparker....
MacBook late '08 2,0 C2D - 4GB | iMac 27" i5 - 12GB | MacMini 1,83 C2D - 1GB | iPhone 3Gs weiß + iPad 32GB | ATV2
last but not least: good old iPod Shuffle 512MB*g*
- 24.11.2010, 09:10 #3Stina Lohmann
Themenstarter
- Registriert
- 10.2009
- Beiträge
- 1.023
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.
- 24.11.2010, 09:13 #4Dülmener Rosenapfel
- Registriert
- 03.2007
- Ort
- Bad Bevensen aka der A**** der Heide
- Alter
- 34
- Beiträge
- 1.665
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.Vollzeitfalschparker....
MacBook late '08 2,0 C2D - 4GB | iMac 27" i5 - 12GB | MacMini 1,83 C2D - 1GB | iPhone 3Gs weiß + iPad 32GB | ATV2
last but not least: good old iPod Shuffle 512MB*g*
- 24.11.2010, 09:34 #5Stina Lohmann
Themenstarter
- Registriert
- 10.2009
- Beiträge
- 1.023
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!');
}
- 24.11.2010, 09:41 #6Dülmener Rosenapfel
- Registriert
- 03.2007
- Ort
- Bad Bevensen aka der A**** der Heide
- Alter
- 34
- Beiträge
- 1.665
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.
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.Code:<?php if(isset($_POST['erwachsene']) && !isset($error['s1']['erwachsene'])){$formval = "value='{$_POST['erwachsene']}' ";}else{$formval = null;} ?> <input type="text" <?php echo $formval ?> />
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.Geändert von das_micha (24.11.2010 um 09:55 Uhr)
Vollzeitfalschparker....
MacBook late '08 2,0 C2D - 4GB | iMac 27" i5 - 12GB | MacMini 1,83 C2D - 1GB | iPhone 3Gs weiß + iPad 32GB | ATV2
last but not least: good old iPod Shuffle 512MB*g*
- 24.11.2010, 09:43 #7Stina Lohmann
Themenstarter
- Registriert
- 10.2009
- Beiträge
- 1.023
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
- 24.11.2010, 09:50 #8Dülmener Rosenapfel
- Registriert
- 03.2007
- Ort
- Bad Bevensen aka der A**** der Heide
- Alter
- 34
- Beiträge
- 1.665
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)Vollzeitfalschparker....
MacBook late '08 2,0 C2D - 4GB | iMac 27" i5 - 12GB | MacMini 1,83 C2D - 1GB | iPhone 3Gs weiß + iPad 32GB | ATV2
last but not least: good old iPod Shuffle 512MB*g*
- 24.11.2010, 10:08 #9Stina Lohmann
Themenstarter
- Registriert
- 10.2009
- Beiträge
- 1.023
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 ^^
- 24.11.2010, 10:19 #10


Zitieren
