Apakah <input> terbentuk dengan baik tanpa <form>?

225

Apakah valid untuk memilikinya <input>tanpa menjadi <form>?

Memiliki proses untuk menandai beberapa bidang dalam halaman dan baru saja menemukan halaman dengan bidang input yang mana tidak ditandai seperti yang saya harapkan.
Perlu beberapa saat bagi saya tetapi berhasil bahwa proses mendapatkan elemen formulir kemudian mendapatkan bidang inilah yang menyebabkan hal ini terlewatkan karena tidak ada formulir.

Greg Domjan
sumber
@Adriano - pikiranku persis. jalankan saja dan lihat!
Gabriel Hurley
1
Tentu validator w3c , saya benar-benar harus menambahkan bahwa penjelasan di balik mengapa akan menyenangkan.
Greg Domjan
Maksud saya juga bahwa itu mungkin berlaku untuk beberapa versi html, tetapi tidak untuk yang lain, dan dalam hal itu, validator jauh lebih cepat daripada membaca standar.
Adriano Varoli Piazza

Jawaban:

200

<input>tanpa tampilan yang <form> valid , ya (setidaknya untuk html 4.01, lihat mendekati akhir 17.2.1):

Elemen yang digunakan untuk membuat kontrol umumnya muncul di dalam elemen FORMULIR, tetapi juga bisa muncul di luar deklarasi elemen FORMULIR ketika mereka digunakan untuk membangun antarmuka pengguna. Ini dibahas pada bagian tentang peristiwa intrinsik. Perhatikan bahwa kontrol di luar formulir tidak dapat menjadi kontrol yang berhasil.

ChristopheD
sumber
7
Untuk dapat mengirimkan data formulir ke server (selain Ajax).
Ludovic Kuty
5
@ PhilipSmith Saya tahu komentar Anda sudah lama ditulis . Tetapi mengapa Anda berpikir ini aneh atau tidak ada gunanya? Mengapa saya ingin membuat formulir jika kontrol tidak berkomunikasi dengan server?
adam-beck
18
Apa itu "kontrol yang berhasil"?
AlikElzin-kilaka
22
Ketika suatu formulir dikirimkan untuk diproses, beberapa kontrol memasangkan nama mereka dengan nilainya saat ini dan pasangan-pasangan ini dikirimkan dengan formulir tersebut. Kontrol-kontrol yang diajukan pasangan nama / nilai disebut kontrol yang berhasil. w3c
SantiBailors
3
@ adam-beck Misalnya, situs web AngularJS tertentu menangani input, memanipulasi data, dan mengirimkannya ke api. Templat HTML untuk formulir dapat ditulis tanpa tag formulir apa pun dan mereka berkomunikasi dengan server dengan baik.
sr9yar
75

Saya memeriksa yang berikut ini dengan validator W3C dan menegaskan ini valid.

<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
  <input type='text' />
</body>
</html>
Wai Yip Tung
sumber
6

Referensi ke spesifikasi yang lebih mutakhir:

HTML 5.2 - Rekomendasi W3C (14 Desember 2017)

Elemen terkait bentuk dapat memiliki hubungan dengan <form>elemen, yang disebut pemilik bentuk elemen. Jika elemen bentuk terkait tidak terkait dengan <form>elemen, pemilik bentuknya dikatakan nol.

David
sumber
4

Menurut MDN adalah mungkin:

Perhatikan bahwa selalu dimungkinkan untuk menggunakan widget formulir di luar elemen tetapi jika Anda melakukannya, widget formulir itu tidak ada hubungannya dengan formulir apa pun. Widget tersebut dapat digunakan di luar formulir, tetapi Anda harus memiliki rencana khusus untuk widget tersebut, karena widget tidak akan melakukan apa-apa sendiri. Anda harus menyesuaikan perilaku mereka dengan JavaScript.

HTML5 memperkenalkan atribut form pada elemen form HTML. Seharusnya Anda dapat secara eksplisit mengikat elemen dengan formulir bahkan jika itu tidak terlampir dalam tag formulir. Sayangnya, untuk saat ini, penerapan fitur ini di seluruh browser belum cukup baik untuk mengandalkannya.

Adnan Faradhi
sumber
2

Saya tahu pertanyaan ini cukup lama, namun, saya telah berhasil membangun banyak halaman entri data yang kompleks tanpa tag formulir. Meskipun tidak dianggap "standar" oleh banyak orang, itu TIDAK pantas untuk menggunakan input tanpa a <form>. Proyek saya adalah contoh di mana saya perlu kontrol penuh atas bagaimana halaman berperilaku dan perilaku bentuk standar menghalangi. Mampu melakukan validasi tingkat halaman dan bidang (menggunakan JS) dan "mengirimkan" data dengan panggilan Ajax dll ... pada kenyataannya, ini adalah cara pilihan saya hari ini.

Banyak JS diperlukan, tetapi tidak terlalu sulit dan mudah dilakukan sebagai kode yang dapat digunakan kembali.

Ada juga contoh lain di mana saya tidak menggunakan formulir dengan input seperti Halaman Login.

Semoga kesaksian ini membantu seseorang.

G-Man
sumber
1

Ya, Anda dapat memiliki input yang valid tanpa formulir.

Heisenberg
sumber
14
Nah, Anda bisa menambahkan beberapa bukti di balik 'ya'. Atau klarifikasi versi HTML mana yang benar. Tetap saja, aku tidak akan memodohmu.
Adriano Varoli Piazza
9
Jadi dengan alasan Anda mengapa bahkan memiliki SO sama sekali jika pengguna hanya bisa pergi ke W3 dan mencarinya sendiri? Saya tidak akan menurunkan Anda juga, tetapi saya harus setuju bahwa orang yang lebih banyak penjelasan dengan cara yang jelas dan ringkas mendapat jawaban, karena penjelasan serta jawaban yang benar adalah apa yang paling membantu di sini di SO.
Mattygabe
-10

Tentu, gunakan

document.getElementById('your_input_id').validity.valid

untuk memeriksa validitas bidang secara dinamis.

taran
sumber
31
Itu tidak ada hubungannya dengan validitas markup, sebaliknya itu untuk API validasi kendala . Bagaimana jawaban ini mendapat 8 upvotes berada di luar jangkauan saya.
user247702