2013-05-22 6 views
5

Ich habe das HTML5-Button-Formular-Attribut verwendet, damit meine Absenden-Schaltfläche außerhalb des Formulars angezeigt wird und mein Absenden trotzdem ausgelöst wird.Gibt es eine Möglichkeit, Schaltflächenformularfunktion in IE10 zu unterstützen/shim?

sieht Meine Form etwas wie folgt aus:

<article> 
    <header>This is my form</header> 
    <section> 
    <p>Something explaining what is happening on this form.</p> 
    <form id="myform" action="/submit" name="myform"> 
     <input type="text" name="thing"> 
    </form> 
    </section> 
    <footer> 
    <button type="submit" form="myform">Submit</button> 
    </footer> 
</article> 

Ich habe diese Arbeit in Chrom/Firefox/Safari in Ordnung, aber ich ging es in IE10 heute zu testen und das Formular nicht!

Neben dem Redesign aller meiner Seiten, um nicht das Attribut form = zu verwenden, weiß jemand, wie man das umgehen kann? Ich möchte, dass es wie ein normaler Submit-Button innerhalb eines Formulars funktioniert. Wenn Sie in das Textfeld klicken, wird das Formular gesendet und auf den Button geklickt.

Ich möchte vermeiden, Klickereignisse hinzuzufügen und auf Eingabe auf Textfeldern zu warten, um das Einreichen in JavaScript auszulösen, wenn möglich.

+0

http://jsfiddle.net/mf63k/ - Wie ist, scheint in allen Browsern zu arbeiten ?, Vielleicht haben Sie irgendwo ungültiges HTML oder Javascript, das dieses Problem verursacht? – Anil

+1

@JustAnil Deine Geige funktioniert nicht in IE10 für mich. Button tut einfach nichts. – Paul

+0

Noch nicht unterstützt in IE11 –

Antwort

8

Es scheint, dass das Attribut form="myForm" nicht auf IE unterstützt wird.

Sehen Sie sich die Tabelle hier für weitere Informationen: http://caniuse.com/#search=Form%20features

Die nur Weg, dies zu replizieren zu bedienen/Erstellen Sie eine JavaScript polyfill das gewünschte Verhalten zu replizieren.

Sie können eine Liste von Cross-Browser finden polyfills hier:
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

ich nicht finden konnte das form Verhalten (aber nur suchte nach einer Minute, so überprüfen Sie sich selbst) zu füllen.

Ich denke, dass Sie Ihre eigenen benutzerdefinierten Polyfill dafür schreiben müssen.

Eine einfache Inline-onclick würde wie folgt aussehen:

<button 
    type="submit" 
    form="myform" 
    onclick="javascript:getElementById(this.getAttribute('form')).submit();" 
>Submit</button> 

JSFiddle: http://jsfiddle.net/mf63k/4/

+1

möchten Sie möglicherweise canisue.com verwenden Als Quelle der gelisteten Unterstützung ist es aktueller. http://caniuse.com/#search=Form%20features. – jmoreno

+0

@jmoreno gute Idee, muss dies beantwortet haben, bevor ich caniuse gestoßen bin, habe ich die Frage mit dem Link aktualisiert. Vielen Dank! – Anil

+0

Ich fand Ihre Antwort auf der verwandten Registerkarte, von einem duplex der Frage - die akzeptierte Antwort hatte einen Workaround/Polyfill – jmoreno