Formular abschicken über submit()
Jan Deppisch
- javascript
0 Tom0 Jan Deppisch0 Tom
Hi Selfhtmler,
wieder einmal ein kurioses Javascript-Problem. Ich habe eine HTML-Datei, in der folgende JS-Funktion enthalten ist:
function Abschicken(nr)
{
document.weiter.hei.value=nr;
document.weiter.submit();
}
D.h.: in ein Formularfeld (type=hidden) wird ein Wert eingetragen, danach wird das Formular abgeschickt. Die Funktion wird über einen Link aufgerufen. Das Eintragen verursacht keinen Fehler, allerdings erscheint bei 'submit' folgende Meldung: 'Objekt unterstützt diese Eigenschaft oder Methode nicht'.
Der FORM-Bereich erstreckt sich über die gesamte Seite, und das versteckte Formularfeld befindet sich oberhalb des Links - aber das kann ja wohl nicht die Ursache des Fehlers sein, oder ? Der Kopf der FORM sieht übrigens so aus:
<form name="weiter" onClick="JavaScript:CheckAll()" action="index.php3" method="post">
Weiss jemand Rat ?
Gruss,
Jan
Hallo Jan
Einfach ins blaue getippt: Gibt es ein anderes Objekt im HTML-Code, dass auch den Namen "weiter" trägt (z.B. ein IMG: <img name="weiter" src=... >) ?
Grüsse
Tom
Einfach ins blaue getippt: Gibt es ein anderes Objekt im HTML-Code, dass auch den Namen "weiter" trägt (z.B. ein IMG: <img name="weiter" src=... >) ?
Nein, (leider) nicht :-)
Jan
Hallo
Nein, (leider) nicht :-)
Schade, wäre ja auch zu einfach gewesen :-(
Kannst Du trotzdem etwas mehr Code, bzw. eine URL posten, wo man sich das Ganze näher anschauen kann.
Ich habe heute zwar schon einigen Kaffe getrunken, aber das mit dem Kaffesatzlesen klappt trotzdem noch nicht ;-)
Grüsse
Tom
Kannst Du trotzdem etwas mehr Code, bzw. eine URL posten, wo man sich das Ganze näher anschauen kann.
Ich habe heute zwar schon einigen Kaffe getrunken, aber das mit dem Kaffesatzlesen klappt trotzdem noch nicht ;-)
Klar, kein Problem :)
Hier ist das Listing - ich hab alles unwichtige rausgeschmissen:
-----
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>test</TITLE>
<script language="JavaScript">
<!--
function Abschicken(nr)
{
document.weiter.hei.value=nr;
document.weiter.submit();
}
//-->
</script>
</HEAD>
<BODY bgcolor="#ffffff" text=#000000 link=red vlink=red alink=red>
...
<form name="weiter" action="index.php3" method=post>
<input type=hidden name="jsactive" value="">
<input type=hidden name="browser" value="">
<input type=hidden name="hei" value="">
<input type=hidden name="wi" value="">
<a href="JavaScript:Abschicken(0)"><b>test1</b></a><br>
<a href="JavaScript:Abschicken(2)"><b>test2</b></a><br>
<a href="JavaScript:Abschicken(1)"><b>test3</b></a>
...
<input type=submit name="submit" value="EINGANG">
</form>
...
</BODY>
</HTML>
-----
Vielleicht kommt dem ja jetzt jemand auf die Schliche ?
<vermutung>
irgendwas im href-tag falsch ?
</vermutung>
cu,
Jan
Hallo Jan,
hier steckt dein Problem:
<input type=submit name="submit" value="EINGANG">
</form>
werfe diesen Button raus oder ändere die Funktion so ab
function Abschicken(nr)
{
document.weiter.hei.value=nr;
document.weiter.submit.click();
}
Ich nehme an, die Fehlermeldung kommt daher, daß die Browser den submit-Button mit abschicken wollen und in Konflikte mit dem Typ kommen.
Viele Grüße Antje
Hallo Antje,
werfe diesen Button raus oder ändere die Funktion so ab
function Abschicken(nr) [...]
Das is ja der Hammer - es geht! Danke!
Ist dieses Problem schon irgendwo dokumentiert ? In Selfhtml hab ich nix dazu gefunden.
Gruss,
Jan
Hallo Jan
Ist dieses Problem schon irgendwo dokumentiert ? In Selfhtml hab ich nix dazu gefunden.
keine Ahnung und Selfhtml kann ja nicht jede Kleinigkeit behandeln, man muß schon sehr viel experimentieren. Es wird aber in die Auslese irgendwann landen, denn dafür ist sie ja da :-)
Viele Grüße
Antje
Hallo Antje!
<input type=submit name="submit" value="EINGANG">
werfe diesen Button raus oder ändere die Funktion so ab
Ich nehme an, die Fehlermeldung kommt daher, daß die Browser den submit-Button mit abschicken wollen und in Konflikte mit dem Typ kommen.
Diagnose gut, aber die Erklaerung...? Durch die Benennung eines Formularelements als "submit" tritt schlicht und einfach ein Namenskonflikt mit der bereits existierenden Methode "submit" auf. Genaugenommen bekommt die Eigenschaft "submit" einen neuen Wert zugewiesen, der nicht laenger vom Typ "object Function", sondern nun ein "object Element" ist. Die Fehlermeldung (Objekt unterstützt diese Eigenschaft oder Methode nicht) drueckt das zwar nicht gerade deutlich aus, aber das erwartet man vom IE ja auch nicht ernsthaft. (Ein richtiger Browser sagt da ganz klar "document.weiter.submit is not a function".)
Bye, Roland
Hallo Roland,
Diagnose gut, aber die Erklaerung...? Durch die Benennung eines Formularelements als "submit" tritt schlicht und einfach ein Namenskonflikt mit der bereits existierenden Methode "submit" auf. Genaugenommen bekommt die Eigenschaft "submit" einen neuen Wert zugewiesen, der nicht laenger vom Typ "object Function", sondern nun ein "object Element" ist. Die Fehlermeldung (Objekt unterstützt diese Eigenschaft oder Methode nicht) drueckt das zwar nicht gerade deutlich aus, aber das erwartet man vom IE ja auch nicht ernsthaft. (Ein richtiger Browser sagt da ganz klar "document.weiter.submit is not a function".)
Recht hast du :-), was allerdings die Frage aufwirft,
warum wird bei Betätigung des Buttons das Formular problemlos abgesendet und bei submit() nicht?
Warum erfolgt hier eine andere Verarbeitung und um den Fragenkatalog voll zumachen, warum wird dann der Aufruf
<form onsubmit="test()"> nicht abgearbeitet?
Viele Grüße
Antje
Huhu!
warum wird bei Betätigung des Buttons das Formular problemlos abgesendet und bei submit() nicht?
Naja, vermutlich wendet sich der Submit-Button nicht an die JS-Methode Form.submit(), sondern wird browserintern direkt abgehandelt. (Waere ja auch fatal, wenn jemand JS ausgeschaltet hat.) Die submit()-Methode wendet sich dann an dieselbe Stelle. Oder doch an eine etwas andere...
Warum erfolgt hier eine andere Verarbeitung und um den Fragenkatalog voll zumachen, warum wird dann der Aufruf
<form onsubmit="test()"> nicht abgearbeitet?
... denn das ist in der Tat eine schlimme Sache, die ich in die Kategorie Bug schieben wuerde. Scheinbar hat hier jemand ein (internes) Event-Modell ein bisschen quick&dirty zusammengeflickt. Tritt das eigentlich mit allen Browsern auf?
Bis dann, Roland