Formular mit entertaste NICHT absenden

hallo,

ich habe ein formular, welches aber auf keinen fall mit dem drücken der entertaste abgesendet werden darf…
(weil der action-tag vorerst noch mitt JS angepasst werden muss, da sonst das ganze formular wieder zurückgesetzt werdenwürde)
geht das überhaupt?
oder muss ich da zu JS greifen? (onsubmit)

mfg Joey

Moin,

nun ja du kannst ja den Absende-Button als normalen Button tarnen und diesen als Anfangsobjekt für eine JS-Anwendung nutzen.

Eine Möglichkeit mit HTML + CSS würde mir so atok nicht einfallen.

MfG
myPages

ich sagte doch:

[quote]…,welches aber auf keinen fall mit dem drücken der entertaste abgesendet werden darf…
(weil der action-tag vorerst noch mitt JS angepasst werden muss, da sonst das ganze formular wieder zurückgesetzt werdenwürde)[/quote]
in meinen augen heisst das:

[quote]nun ja du kannst ja den Absende-Button als normalen Button tarnen und diesen als Anfangsobjekt für eine JS-Anwendung nutzen.[/quote]so isses ja,
aber es darf nicht mit der ENTER-Taste abgesendet werden (ich meine, du hast den cursor in nem textfeld (input type=“text”), und drückst die Enter-taste, und nix passiert :wink: )
mfg Joey

:wink:

:wink:

Das Element form braucht aber ein Attribut action (mit einer
gültigen URI) drin, ohne ist das in (X)HTML nicht vorgesehen.

Den Abschickeknopf einzusparen oder zu verstecken, hilft meist
auch nichts, weil der Nutzer den Kram eben auch so losschicken
kann, zumindest bei input-Elementen.

Die generelle Lösung besteht darin, kein Formular zu verwenden,
wenn nichts losgeschickt werden soll ;o)
Wenn der Kram nur so aussehen soll, wie ein Formular, verwendet
man dafür wie immer CSS, um das Aussehen vorzuschlagen.
Es ist nunmal der Sinn und die Funktion von Formularen in (X)HTML
losgeschickt zu werden, da kann man nicht erwarten, sowohl ein
sinnvolles und korrektes Dokument zu haben und darin ein
nicht losschickbares Formular, das verträgt sich nicht ;o)

Nein.
ihr versteht mich glaub nicht ganz.

ich habe ein formular, welches nciht mit der entertaste versendet werden darf. anders schon…
ich will ja auch nur, dass es nicht über die entertaste geht, des weiteren habe ich KEINEN direkten submit-button, das mache ich eben mittels JS, da passe ich das attribut “action” je anch dem, welchen Link man angeklickt hat an, und verwende dann “document.getElementById(‘formular’).submit();”

aber ich versuchs jetzt einfahc mal was mit onsubmit zu basteln…

danke trotzdem

mfg Joey

Da liegt eben das prinzipielle Verständnisproblem.

Man kann ein Formular schon auch anders absenden, etwa auch
per js. Das ist aber dann immer nur eine Alternative zu der
normalen Funktionalität von (X)HTML, ist die nicht gewährleistet,
ist das Formular schlicht defekt. Insbesondere muß man das
Formular auch ohne js abschicken können, sonst ist es kein
sinnvolles Formular und man sollte die zugehörigen Elemente
gar nicht verwenden, weil es sonst unsinnig ist, wenn man das
Formular nicht auf jeden Fall abschicken kann.
Deswegen ist das Attribut action auch nicht optional und sollte
eine gültige URI enthalten, deswegen sollten irgendwelche
Formularelemente auch nicht außerhalb des Elementes form
auftauchen, weil sie dort sinnlos sind.
Ein bißchen muß man (X)HTML schon verstehen, wenn man es
verwenden will ;o)

Ich sags mal so:
JS hat auch seine Berechtigung, warum sollte es dann nicht verwedet werden?
Und: Es ist ja schön und gut, validen Code zu shreiben, aber wenn er dadurch nicht die gewünschte Funktionalität hat, nützt einem der valide Code auch nicht viel :astonished:

Mein Vorschlag:

man ruft mit onSubmit eine JavaScript Funktion auf, die das verschicken des Formulars verhindert.
zum abschicken des Formulars benutzt man einen button mit type=“button”, nicht type=“submit”.
Dieser Button ruft mit onClick eine Funktion auf, die das Formular absendet.

Gibt es kein JS, weil es deaktiviert ist, oder nicht unterstützt wird, kann man das Formular aben nicht absenden, es sei denn, man kann es irgendwie schaffen, das der button, nur wenn js aktiviert ist type-button ist, sonst type-submit.

Ungefähr verstanden, was ich meine?
Ich poste hier keinen Code, da ich kein JS kann. Aber das wäre mein Lösungsansatz

:slight_smile:
so in etwa, danke vielmals

mfg Joey

…und deshalb freue ich mich auf die XForms ._.

Edit, hab noch einen anderen Lösungsvorschlag, wie es klappen könnte.

vielleicht könnte man in JavaScript was mit onkeypress machen.
irgendwie so in der art:

und in einer funktion checkkey müsste man überprüfen, welche Taste gedrückt wurde…
Womöglich müsste man noch irgendwas an die Funktion übergeben (bin mir nicht sicher), und je nach dem ob Enter gedrückt wurde wird false, sonst true zurück übergeben…
Ob das “return false” dann auch das senden des Formulars unterbindet weiß ich nicht (nie probiert)

Edit: oder man macht es etwas umständlicher
Ein Formular irgendwo auf der Seite, nur mit type=“hidden” Input Feldern.
Woanders auf der Seite sind ebenfalls Input Felder, die die eingaben tatsächlich entgegen nehmen. Diese sichtbaren Felder dürfen dann nicht innerhalb des -Tags sein und müssen alle eine eindeutige ID haben.
Ein normaler Button (type=“button”) hat beim onclick Attribut eine JavaScript Funktion, die aufgerufen wird.
Diese Funktion kopiert dann die Inhalte aus den sichtbaren Input Feldern, in die Hidden Felder, und das Formular wird mit einem submit() abgesendet.
Da die sichtbaren Felder nicht innerhalb des Formulars sind, kann das Formular auch nicht mit Enter abgesendet werden.

mfg Balmung

function submit(data)
{
   if(!data)
      return false;
   else
   {
       //daten Setzen
       document.forms[0].submit();
   }
}

document.forms[0].onsubmit=submit;
<form action="submit.php">
  <input type="submit" onclick="submit('button1');" name="button1" value="Submit" />
</form>

Wenn kein JS aktiviert ist, wird das Formular normal abgesendet (in jedem Fall), falls es jedoch aktiviert ist, wird es nur durch klicken auf den Submit-Button abgesendet.
“return false” verhindert, dass der Browser seine Standardmethode anwendet :wink:

hm…

danke für eure antworten, ich machs jetzt so, dass JS aktiviert sein MUSS, denn sonst würde das formular einfach wieder so erscheinen, wie man es senden wollte, da keine action ausgeführt wird
mittels onsubmit überprüf ich nun das Ziel (action) und wenn der den url vom anfang enthält, wirds abgebrochen :slight_smile:

achja:
@hoffmann: ich glaub nicht, dass ich nix von (X)HTML versteh, vllt. sollte ich mich nun beleidig fühlen, und das Forum verlassen?
aber ich glaube nich, dass das zu meinem style passt, daher überseh ich mal deine bemerkung :neutral_face:

bcg - nach einer Untersuchung von Google (die auch keine
korrekten Seiten haben), sind über 90% der Google zugänglichen
HTML-Inhalte im internet technisch fehlerhaft bis unsinnig.
Insofern scheint es den meisten Autoren schwer zu fallen, (X)HTML
zu verstehen und richtig anzuwenden.
Insofern mußt du dich nicht beleidigt fühlen, solltest besser die
Chance nutzen, was zu lernen, um zu den Leuten zu gehören, die
(X)HTML sinnvoll verwenden ;o) Daher ist es weder sinnvoll,
beleidigt zu sein, noch die Bemerkung zu übersehen, beides
wird dich nicht weiterbringen ;o)
Was das Verlassen des Forums betrifft - warum? Ist doch ganz
unterhaltsam. Statistisch spannend ist dabei natürlich, wie sich
die 90%-Beobachtung zu den Lösungsvorschlägen in einem Forum
verhält. Ich meine, die Qualität liegt leicht drüber, aber es
kommen eben auch immer wieder unsinnige Vorschläge zu zudem
teils auch unsinnigen Fragen. Und die unsinnigen Vorschläge
kommen auch teils noch, wenn die Frage schon sinnvoll
beantwortet wurde. Insofern ist es nicht trivial, allein aus einer
Forendiskussion etwas zu lernen, das muß man dann schon
kritisch hinterfragen und auf Plausibilität prüfen, mit
Spezifikationen vergleichen etc, was es einem ermöglicht, durch
eigenes Denken die Qualität der eigenen Arbeiten selbst über das
hinaus zu steigern, was einem da vorgeschlagen wurde.
Das braucht man schon, denn die richtige Anwendung von
(X)HTML ist alles andere als einfach, verglichen etwa mit PHP oder
CSS, sofern da was vergleichbar ist. Es machen sich eben nur
viele Leute mit (X)HTML einfach, was zu dem oben erwähnten
statistischen Resultat führt.

da stimm ich dir zu :wink:
naja, was ich des weiteren noch schreiben könnte fällt mir leider nicht ein, dashalb…

mfg Joey