tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
238
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DiDiJo DiDiJo ist offline Mitglied Brokat
    Registriert seit
    Sep 2008
    Beiträge
    285
    Hi Leute,

    ich verzweifele gerade an einer simplen JS Anweisung.

    Ich habe ein Formular mit Submitbuttons. Allerdings soll möchste das Formular schon abschciken, sobald man einen bestimmten Radio-Button gedrückt hat.

    An sich nix kompliziertes:

    Hier mal ein grober Aufbau von meinem Formular:
    HTML-Code:
    <form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="editpage" id="editpage" onsubmit="return checkForm(document.forms['editpage'],false);">
    
    <div>
      diverse inhalte
      <input title="Seitentyp" type="radio" name="siteType" value="PORTAL" onclick="document.getElementById('editpage').submit()"/>
      <input title="Seitentyp" type="radio" name="siteType" value="CONTENT" onclick="this.form.submit()"/>
      <input title="Seitentyp" type="radio" name="siteType" value="BLA1" onclick="document.forms['editpage'].submit()"/>
      <input title="Seitentyp" type="radio" name="siteType" value="BLA1" onclick="document.editpage.submit()"/>
    </div>
    
    <div>
      diverse inhalte
      <input type="submit" name="submit" value="Alles speichern" />
    </div>
    
    <div>
      diverse inhalte
      <!-- ich weiß hier stehen doppelte Namen. Die soltlen aber nicht für das Problem verantwortlich sein-->	
      <input type="submit" name="submit" value="Alles speichern" />
    </div>
    </form>
    Kann mir bitte einer erklären warum keins dieser JS-Codes (in den Radio-Boxen) funktioniert.

    Ich bekomme ständig den Fehler, dass submit() keine Funktion ist. Ich habe auch schon den Quelltext meiner Seite überprüft ob ich ggf. dieses editpage mehrfach benutze --> Fehlanzeige.

    Um die Formularprüfung einzubauen habe ich auch folgendes versucht:
    HTML-Code:
    <input title="Seitentyp" type="radio" name="siteType" value="CONTENT" onclick="if(checkForm(document.forms['editpage'],false)) {this.form.submit();}"/> <strong>Inhaltsseite</strong>
    Das funktioniert genausowenig. Die CheckForm Funktion wirft übrigens true oder false zurück ... je nachdem ob Fehler gefunden worden oder nicht.

    Ich hoffe jemand kann mir helfen ... ich krieg langsam nen dicken HALS ******

    Mit freundlichen Grüßen

    Daniel Schmidt
     

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.363
    Blog-Einträge
    4
    Hallo Daniel,

    ich habe gerade den Fehler mittels Testen gefunden. Der Fehler ist, dass der Browser denkt, dass du mittels document.getElementById("editpage").submit() auf das Input-Feld, das auch so heißt, zugreifen möchtest.
    Allerdings ist dieses dann ein Objekt (vom Typ Input-Feld) und keine Funktion!

    Also ist die Lösung ziemlich einfach: Den Submit-Button umbenennen!

    Übrigens würde ich folgende Schreibweise - wie du es beim ersten Input-Feld getan hast - für onclick empfehlen:
    Code javascript:
    1
    
    document.getElementById('editpage').submit();
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Ich glaube das eben die gleichen Namen das Problem sind. Vergeben mal für jedes Objekt einen eigenen Namen und rufe das Submit-Ereignis so auf:

    Code :
    1
    
    onclick="document.editpage.submit();"

    dann sollte es klappen.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  4. #4
    DiDiJo DiDiJo ist offline Mitglied Brokat
    Registriert seit
    Sep 2008
    Beiträge
    285
    Zitat Zitat von ComFreek Beitrag anzeigen
    Hallo Daniel,

    ich habe gerade den Fehler mittels Testen gefunden. Der Fehler ist, dass der Browser denkt, dass du mittels document.getElementById("editpage").submit() auf das Input-Feld, das auch so heißt, zugreifen möchtest.
    Ok ich werde das mal mit den verschiedenen Namen für den Submit ausprobieren.
    Aber ich habe auf der gesamten Seite kein Feld was editpage heißt. Der Name wurde NUR beim Form-Tag benutzt und zwar als ID und name. Dweshalb bin ich so verwundert, dass es irgendwas mit den Knöppen zu tun haben soll ...

    Mfg DiDi
     

  5. #5
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.363
    Blog-Einträge
    4
    Aber ich habe auf der gesamten Seite kein Feld was editpage heißt. Der Name wurde NUR beim Form-Tag benutzt und zwar als ID und name. Dweshalb bin ich so verwundert, dass es irgendwas mit den Knöppen zu tun haben soll ...
    Einen Namen kann man übrigens mehrmals im Dokument nutzen! Im Gegensatz zu einer ID, die eindeutig sein muss.

    Um es etwas deutlicher zu machen:

    Nun, um das Problem zu verstehen, muss man wissen, dass man mittels Form-Objekt auch auf die einzelnen Felder per Namen zugreifen kann.
    Beispiel:
    HTML-Code:
    <form id="the_form">
      <input type="text" name="first_field" />
    </form>
    Code javascript:
    1
    2
    
    var form_obj = document.getElementById("the_form"); // Das Form-Objekt im DOM
    alert(form_obj.first_field); // liefert in Chrome: [object HTMLInputElement]

    Außerdem gibt es noch die Funktion submit() bei jedem Form-Objekt, die das Formular abschickt.

    Jetzt war das Problem hier, dass ein gleichnamiges Input-Element (Submit-Button) erstellt hast. Dieses hat die submit()-Funktion überschrieben! Von daher versuchtest du immer das Input-Element als Funktion aufzurufen -> Fehler!
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

Ähnliche Themen

  1. jQuery: $("#FormId").validator().submit(function(e) {...}
    Von messmar im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 21.02.11, 16:26
  2. Antworten: 9
    Letzter Beitrag: 14.01.11, 14:08
  3. $_POST['submit'] bleibt leer beim Formular Abschicken mit submit()
    Von godfather_al im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 23.12.10, 14:13
  4. Antworten: 1
    Letzter Beitrag: 27.07.09, 00:52
  5. Antworten: 4
    Letzter Beitrag: 14.11.07, 07:54