2013-05-22 15 views
5

Używam atrybutu formularza przycisku HTML5, aby mój przycisk przesyłania pojawiał się poza formularzem i nadal wyzwalał moje zgłoszenie.Jakikolwiek sposób na obsługę/shim formularza formularza przycisku w IE10?

Moja forma wygląda mniej więcej tak:

<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> 

mam to działa dobrze w Chrome/Firefox/Safari, ale poszedłem do testowania go w IE10 dziś i forma nie złoży!

Oprócz przeprojektowywania wszystkich moich stron, aby nie używać atrybutu form = form, czy ktoś wie, jak sobie z tym poradzić? Chcę, aby działał jak normalny przycisk przesyłania w formularzu, gdzie naciśnięcie klawisza Enter w polu tekstowym spowoduje przesłanie formularza, a także kliknięcie przycisku.

Chciałbym uniknąć dodawania zdarzeń kliknięcia i nasłuchiwania wpisywania w polach tekstowych, aby włączyć wysyłanie w JavaScript, jeśli to możliwe.

+0

http://jsfiddle.net/mf63k/ - Jak jest, to wydaje się działać we wszystkich przeglądarkach ?, może masz jakiś nieprawidłowy kod HTML lub JavaScript powodujący ten problem? – Anil

+1

@JustAnil Twoje skrzypce nie działa w IE10 dla mnie. Przycisk po prostu nic nie robi. – Paul

+0

Nadal nieobsługiwany w IE11 –

Odpowiedz

8

Wygląda na to, że atrybut form="myForm" nie jest obsługiwany w IE.

Zobacz tabelę tutaj, aby uzyskać więcej informacji: http://caniuse.com/#search=Form%20features

The tylko drogę do powtórzenia tego będzie użycie/utworzyć javascript PolyFill replikować pożądanego zachowania.

można znaleźć listę przekroju przeglądarce polyfills tutaj:
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

nie mogłem znaleźć jeden wypełnić zachowanie form (ale tylko spojrzał na minimum, więc sprawdź sam).

Myślę, że będziesz musiał napisać własne niestandardowe polyfill dla tego.

Prosty inline onclick będzie wyglądać następująco:

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

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

+1

możesz chcieć użyć canisue.com jako źródło wymienionego wsparcia, jest bardziej uptodate. http://caniuse.com/#search=Form%20features. – jmoreno

+0

@jmoreno dobry pomysł, musiałem odpowiedzieć na to, zanim natknąłem się na caniuse, zaktualizowałem pytanie linkiem. dzięki! – Anil

+0

Znalazłem twoją odpowiedź na powiązanej karcie, z dup pytania - zaakceptowana odpowiedź miała obejście/polyfill – jmoreno

Powiązane problemy