2011-08-02 23 views
11

UPDATE Od @BrendanEich Formularz onsubmit kontra przycisk Prześlij onclick

@mplungjan onclick od przedstawienia tylko wypada, że ​​bycie przycisk; Forma onsubmit jest wyraźnie lepsza.


co byłoby powodów, aby kiedykolwiek używają OnClick przycisku złożyć w celu ustalenia, czy formularz należy złożyć?

Wierzę mocno, że

  1. wykonać coś przed wysłaniem i anulować złożyć w przypadku błędu, onsubmit wydarzenie formie jest oczywistym miejscem, aby umieścić go
  2. Jeśli używasz OnClick przedstawić i później zdecydują się użyć type = "image", w którym obsługa zdarzeń nie powiedzie się w wielu przeglądarkach
  3. jeśli zmienisz przycisk submit na przycisk, będziesz musiał dodać także przesyłkę do obsługi zdarzenia onclick.

Szukam silnych powodów, dla których warto preferować użycie zdarzenia onclick przycisku przesyłania nad formularzem onsubmit.

AKTUALIZACJA: Proszę nie pamiętać, że osobiście znam wiele problemów związanych z przesyłaniem i zatwierdzaniem formularzy.
Na przykład, że złożenie przez JavaScript nie wywoła onsubmit http://jsfiddle.net/mplungjan/3A4Ha/

<form onsubmit="alert('onSubmit called')"> 
    <input type="text" value="This will submit on enter but in IE the onclick is not triggered" style="width:100%"/><br/> 
    <input type="submit" onclick="alert('Clicked')" /> 
</form><br /> 
<a href="#" onclick="alert('Submitting by script'); return false">Submit by script will not trigger onsubmit</a> 

także, że IE nie wywoła onclick jeśli trafisz wpisać w formularzu w moim skrzypce


Historia:

Dostał się do dyskusji tutaj

html button not clickable without being disabled

mam intensywną niechęć do korzystania z OnClick przycisku przesłać na wszystko z powodu wielu latach widząc to nie działa w wielu przeglądarkach, głównie starszych wersji IE. Wymieniłem kilka oczywistych powodów, ale jestem pewien, że nie przekonają one zahartowanego użytkownika.

Czy społeczność SO pomaga mi przygwoździć tego do ściany, tak jak przybili nauczyciele? Możesz również wyrazić opinię, w jaki sposób mogę sformułować to pytanie w akceptowalny sposób.


1: od czasów NS2.x i IE3.02

+1

Wygląda bardziej na dyskusję niż na pytanie ... uważaj! Och, zgadzam się na użycie zdarzenia submit. :-) – RobG

+0

Zgadzam się z użyciem formularza onsubmit - to również obejmuje przesyłanie za pomocą klawisza Enter, a nie przycisku przesyłania. – nnnnnn

+0

Prawdopodobny duplikat: http://stackoverflow.com/questions/4529012/?hl=pl-może--uzyskać-odbić- lub -formularz-przypomina-nie-poprawić-form-fi –

Odpowiedz

12

Formularz onsubmit jest bardziej poprawne podejście, z tego prostego powodu, że forma może być również złożony z kluczem <ENTER>, i nie tylko poprzez kliknięcie przycisku przesyłania.

+0

Również Javascript. – Paddy

+0

To też :) Ale staram się podać bardziej praktyczny przykład. Dobre połączenie. –

+0

Tylko ze względu na kompletność, dla przyszłych odwiedzających. :) Ale tak, pokryłeś 99% przypadków użycia, dlatego właśnie skomentowałem twoją odpowiedź zamiast dodawać własne. – Paddy

Powiązane problemy