Can: Formular ohne form-tag

Hi Leute,

ich wollte fragen, inwiefern es elegant ist, ein Formular ohne form-tag zu programmieren.

Ich meine so etwas:

  
<table>  
<tr>  
<td>User:</td><td><input type="text"></td><td><button id="submit">OK</button></td>  
</tr>  
</table>  
  
<script>  
$("#submit").click({  
$.post(  
"login.jsp",  
...  
);  
});  
</script>  

Also quasi alles mit JQuery regeln anstatt mit einem form-tag mit den attributen method und action.

Danke für Antworten.

  1. Hallo,

    ich wollte fragen, inwiefern es elegant ist, ein Formular ohne form-tag zu programmieren.

    IMO überhaupt nicht.

    Also quasi alles mit JQuery regeln anstatt mit einem form-tag mit den attributen method und action.

    Was für einen Vorteil versprichst du dir davon? Ich sehe in erster Linie eine künstlich aufgebaute Barriere und zusätzlichen Implementierungsaufwand für etwas, das der Browser auch von allein könnte.

    Ciao,
     Martin

    --
    Mir geht es gut. Ich mag die kleinen Pillen, die sie mir dauernd geben.
    Aber warum bin ich ans Bett gefesselt?
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo zusammen

      Was für einen Vorteil versprichst du dir davon? Ich sehe in erster Linie eine künstlich aufgebaute Barriere und zusätzlichen Implementierungsaufwand für etwas, das der Browser auch von allein könnte.

      Vielleicht hat Can an die ganzen Bot-Programme gedacht, die durch das Netz wandern und nach Form-Tags suchen, um Ihren "Viagra-Müll" zu platzieren. Sucht ein Bot nach einem Form-Tag, und findet keines, zieht er eventuell unverrichteter Dinge weiter...

      Anders kann ich mir den wunsch ohne Form-Tag auskommen zu wollen sonst auch nicht erklären. Die anderen Einwände sind natürlich gegeben. Html-erisch keine gute Idee.

      Gruss HP-User

  2. Danke für Antworten.

    Wer hat denn das als "elegant" bezeichnet? Das ist ein Schmarren.

    Kritik:
    1)
    Es werden ohne Javascript nicht funktionierende Elemente angezeigt, auch dann, wenn Javascript nicht aktiviert ist.

    Was soll die Tabelle?

    fred

  3. servus Can,

    ich wollte fragen, inwiefern es elegant ist, ein Formular ohne form-tag zu programmieren.

    Das ist gar nicht elegant.

    <table>

    <tr>
    <td>User:</td><td><input type="text"></td><td><button id="submit">OK</button></td>
    </tr>
    </table>

    <script>
    $("#submit").click({
    $.post(
    "login.jsp",
    ...
    );
    });
    </script>

      
    Wozu die Tabelle?  
      
    
    > Also quasi alles mit JQuery regeln anstatt mit einem form-tag mit den attributen method und action.  
      
    Wo soll der Vorteil liegen? Es gibt keinen. Es gibt eher einen Nachteil. Ist Javascript deaktiviert, kannst du nichts verschicken.  
      
    der wurzelbert
    
    -- 
    "The depressing thing about tennis is that no matter how good I get, I´ll never be as good as a wall."
    
  4. Moin,

    ich wollte fragen, inwiefern es elegant ist, ein Formular ohne form-tag zu programmieren.

    Eleganz = 0

    Also quasi alles mit JQuery regeln anstatt mit einem form-tag mit den attributen method und action.

    JQuery ist ja dein gutes Recht, aber was hindert dich daran, trotzdem ein semantisch korrektes Form-Tag zu verwenden?

    Grüße Marco

  5. Hi Leute,

    Moin,

    ich wollte fragen, inwiefern es elegant ist, ein Formular ohne form-tag zu programmieren.

    Äh, gar nicht?

    Also quasi alles mit JQuery regeln anstatt mit einem form-tag mit den attributen method und action.

    Was soll der Vorteil davon sein? Und was machst du, wenn ein Nutzer JavaScript deaktiviert hat?

    Viele Grüße,
    Robert

  6. Hmm,

    mir ging es um das Attribut return onsubmit des form tags.
    Bei diesen kann man ja eine Funktion aufrufen. Ich wollte einfach keine
    javascript funktion in meine HTML Seite einbauen, das war der Hintergedanke.

    Vergesst die Tabelle :)

    1. Jetzt habe ich nämlich das Problem dass ich JS OO programmieren und nicht weiss, wie ich eine validierungsfunktion von der return onsubmit aufrufen kann.

      Code:

        
      <form method="post" action="#" onsubmit="return Test.onsub();">  
      <input type="text" placeholder="Name" />  
      <button type="submit">OK</button>  
      </form>  
      <script>  
      $(document).ready(function(){  
      new Test();  
      });  
        
      var Test = function(){  
      var onsub = function(){  
      alert("TEST");  
      return false;  
      }  
      this.onsub = function(){  
      alert("TEST");  
      return false;  
      }  
      };  
        
      Test.prototype.onsub = function(){  
      alert("TEST");  
      return false;  
      }  
      </script>  
      
      
      1. Jetzt habe ich nämlich das Problem dass ich JS OO programmieren und nicht weiss, wie ich eine validierungsfunktion von der return onsubmit aufrufen kann.

        Du vermischt hier verschiedene OOP-Ansätze. Schau dir mal meine Dokumentation zur Organisation von JavaScript an.

        Einmal sprichst du Test als Objekt an und erwartest eine Methode onsub:

        onsubmit="return Test.onsub();"

        Dann rufst du Test als Konstruktorfunktion auf, machst aber nichts mit der erzeugten Instanz:

        new Test();

        var Test = function(){
        var onsub = function(){
        alert("TEST");
        return false;
        }

        Hier definierst du eine lokale Funktion, die aber nicht weiter verwendet wird.

        this.onsub = function(){
        alert("TEST");
        return false;
        }

        Hier definierst du eine Methode direkt an der Instanz (angenommen, Test wird als Konstruktor aufgerufen).

        Test.prototype.onsub = function(){
        alert("TEST");
        return false;
        }

        Hier definierst du eine Methode am Prototyp. Instanzen von Test werden diese vererben.

        Das sind mehr oder weniger alternative Ansätze. Du musst dich entscheiden, was du hier tun willst, und dann den entsprechenden Weg gehen.

        Entweder du definierst ein einfaches Modul mit dem Objekt-Literal:

        var Test = {
          onsub: function () {}
        };

        Oder du arbeitest mit Konstruktoren, Prototypen und Instanzen. Das ergibt Sinn, wenn du mehrere Formulare dieser Art hast und sie konfigurieren willst. Dann solltest du das Event-Handling mit JavaScript lösen, sodass du die Test-Instanz nicht global verfügbar, sondern in sich gekapselt ist.

        Mathias