2012-03-28 11 views
6

To jest bardzo podstawowe pytanie, ale jestem pewien, że ktoś tam wie, dlaczego. W HTML, gdy samodzielnie wykonuję element przycisku, a go nie podaję, a przycisk nie będzie działał, nic się nie stanie. Idealny. Ale kiedy to zrobię, ale przycisk wewnątrz elementu <form>, spróbuje wysłać dane GET wszystkich elementów formularza na adres główny mojej witryny internetowej? Dlaczego to robi? Nie zrobiłem tego jako przycisku przesyłania, a nawet nie zdefiniowałem w tym formularzu method lub action?HTML dlaczego przyciski w formularzach wysyłają dane?

Dzięki za informację z góry!

** EDIT **

To, co zrobiłem, aby rozwiązać problem. Dla przycisków wewnątrz <form>, użyj:

<button type="button"></button> 

I to nic nie da domyślnie.

+0

Chciałbym to również wiedzieć. Osobiście uważam, że przycisk powinien być po prostu przyciskiem, a element 'input [type = submit]' powinien w rzeczywistości przesłać formularz ... –

+0

Jest to funkcja typu * by-desgin *. –

+0

Nie jestem pewien, czy rozumiem pytanie.Przyciski są mechanizmem do robienia rzeczy. Więc jaki jest sens przycisku, który nic nie robi? A jeśli nie chcesz żadnej funkcjonalności formularza, dlaczego w ogóle używasz '? Nawiasem mówiąc, "metoda" jest opcjonalna i domyślnie "GET"; 'location' nie jest atrybutem. –

Odpowiedz

9

Jak można zobaczyć w odpowiednim wpisie MDN, domyślną wartością dla elementu przycisku jest submit. Jeśli go pominiesz lub nie zmienisz na button lub reset, domyślne zachowanie zostanie uruchomione i formularz zostanie przesłany.

<form action=""> 
    <button type="button">Nothing will happen</button> 
    <button>Form gets submitted</button> 
</form> 
+0

Wiedziałem, że to się podoba, ale nie dlaczego. Dzięki za link. – kontur

+0

Domyślam się, że nie ma powodu, prawdopodobnie pochodzi od próby, aby ułatwić kodowanie w ciągu dnia ... może. –

+0

@jeffery_the_wind Myślę, że zamierzonym zastosowaniem w początkowych dniach było po prostu przesłanie formularzy. W tamtych czasach nie było potrzeby stosowania dodatkowej właściwości 'type'. Później przyszła ta potrzeba, ale dla zachowania kompatybilności wstecz, domyślnym typem pozostało 'submit'. Tylko moje przemyślenia - brak referencji na ten temat. – Sirko

0

Został zaprojektowany w ten sposób, ponieważ czasami trzeba wiedzieć, który przycisk został naciśnięty po stronie serwera. Jeśli chcesz mieć funkcję przycisku bez przycisku, użyj stylizowanego znacznika A.

0

Przyciski są traktowane jako elementy sterujące w formularzach, nie wiem dlaczego.

Powodem umieszczenia go w katalogu głównym jest fakt, że nie podano wartości action, więc używana jest wartość domyślna.

Powodem, dla którego użył GET, ponieważ jest to domyślny method.

Aby temu zapobiec, dodaj return false; na końcu przycisku onclick.

4

nie sprawiają, że przycisk Prześlij

<button> elementy mają a type attribute. The default value is submit. Ustaw type="button", jeśli nie chcesz, aby przesłać formularz.

lub nawet zdefiniować Sposób

method domyślnie GET

lub miejsce w tej postaci ??

action domyślnie przyjmuje bieżący identyfikator URI.

Powiązane problemy