Chcę utworzyć formularz logowania na jednej stronie HTML, aby wyświetlić z jQuery (jestem nowy w technologii).

Zastanawiam się, czy powinienem użyć <div> i ukryć / wyświetla go lub użyj <form> i ukryj / wyświetla go. Informacje zostaną wysłane do serwletu z AJAX.

Jeśli użyję <div>, co powinienem używać jako substytut <input> dostępny w formularzach?

Jeśli używam <form>, wierzę, że muszę podać akcję, która jest denerwująca, ponieważ używam pojedynczej strony. Czy istnieje sposób, aby uniknąć tego problemu?

Jaka jest zalecana metoda logowania do użycia w tym przypadku, <div> lub <form>?

4
Jérôme Verstrynge 18 październik 2011, 23:04

5 odpowiedzi

Najlepsza odpowiedź

Powinieneś użyć znacznika <form>, ponieważ jest semantycznie poprawny (użytkownicy wypełnią formularz logowania ).

Możesz pozwolić action="" na formularzu i zapobiec próbom przesłania z onsubmit nieruchomości:

$("form#myForm").submit(function() {
    // do your ajax here

    return false; // prevents the default action
});
3
jtfairbank 18 październik 2011, 19:10

Jeśli użyję <div>, co powinienem używać jako substytut <input> dostępny w formularzach?

Doskonale jest dołączenie <input> poza <form>.

Powiedział, że zazwyczaj używałbym <form>, dzięki czemu możesz wiązać się z wydarzeniem onsubmit, zamiast martwić się o ludzi, naciskając Enter, aby przesłać formularz i jakie wydarzenia generuje (co zależy od przeglądarka i zawartość formularza). Lepiej zaznaczyć formularz jako formularz i niech przeglądarka zastosuje normalne zachowania podobne do formularzy niż ściganie, próbując go udać.

Idealnie, aby progresywne zwiększenie poprawnie, powinieneś najpierw sprawić, że formularz działa najpierw bez JavaScript, więc w rzeczywistości będzie coś użytecznego, w którym chcesz wskazać action. Następnie dodaj skrypty / xmlhttpRequest na górze. Jeśli MUSISZ Masz formularz, który działa tylko ze skryptem, możesz dodać go na stronę ze skryptu, dzięki czemu nie jest to obecne dla użytkowników NON-JS i nie są zdezorientowani próbując go przesłać .

12
bobince 18 październik 2011, 19:13

Zastanawiam się, czy powinienem użyć <div> i ukryć / wyświetla go lub użyj <form> i ukryj / wyświetla go.

Użyj formularza. Budowanie rzeczy, które działają

Jeśli użyję <div>, co powinienem używać jako substytut <input> dostępny w formularzach?

Jeśli miałbyś użyć div, nadal używasz wejścia, ale użyj formularza.

Jeśli używam <form>, wierzę, że muszę podać akcję, która jest denerwująca, ponieważ używam pojedynczej strony.

Nie rób tego. Budować na rzeczy, które działają.

9
Quentin 18 październik 2011, 19:07

Nie ma prawie żadnej różnicy - chyba że martwisz się o zawartość semantyczna (A {x0}} Wykryje, że jest przeznaczony do wejścia użytkownika bardziej wyraźnie niż <div> byłoby), wdzięku degradacji (<form> może nadal pracować bez javascript), Dostępność (która byłaby Prawdopodobnie wymagają utrzymania wdzięku degradacji na uwadze), Progressive Enhancement lub Dokresyjny JavaScript.

5
Richard JP Le Guen 18 październik 2011, 19:08

Jeśli planujesz aplikację, aby pracować dla użytkowników bez włączenia obsługi JavaScript, użyj elementu form, który jest standardowym sposobem wykonania zgłoszeń w HTML.

Jeśli jest tylko dla postbacków typu Ajax, możesz użyć również div. Oczywiście, w każdym razie będziesz potrzebować elementów <input ../>, ponieważ nie mogą być podstawione przez cokolwiek innego.

Jedną z rzeczy, które otrzymujesz, jeśli korzystasz z podejścia form - możesz zadzwonić do {x1}} Metoda elementu formularza, aby uzyskać wszystkie nazwy pola + wartości w łańcuchu.

Edytuj: Nie, w rzeczywistości metodę serialize() może być stosowany na dowolnym elemencie Dom, więc {x1}} nie ma zalety nad div.

1
naivists 18 październik 2011, 19:09