<input> está bem formado sem um <form>?


225

É válido ter <input>sem estar em um <form>?

Tenha um processo para marcar alguns campos nas páginas e apenas encontre uma página com campos de entrada que não estejam sendo marcados como eu esperava.
Demorei um pouco, mas descobri que o processo de obter os elementos do formulário e obter os campos é o que causou a perda deles, porque não há formulário.


@ Adriano - meu pensamento exatamente. basta passar e ver!
Gabriel Hurley

1
Claro validador w3c , eu realmente deveria ter acrescentado que uma explicação por que seria legal.
Greg Domjan

Quero dizer também que pode ser válido para algumas versões do html, mas não para outras, e nesse caso, o validador é muito mais rápido do que examinar os padrões.
Adriano Varoli Piazza

Respostas:


200

<input>sem um <form> parecer válido , sim (pelo menos para o html 4.01, olhe próximo ao final do 17.2.1):

Os elementos usados ​​para criar controles geralmente aparecem dentro de um elemento FORM, mas também podem aparecer fora de uma declaração de elemento FORM quando são usados ​​para criar interfaces com o usuário. Isso é discutido na seção sobre eventos intrínsecos. Observe que controles fora de um formulário não podem ser controles bem-sucedidos.


7
Ser capaz de enviar dados de formulário para um servidor (Ajax de lado).
Ludovic Kuty 9/09/13

5
@PhilipSmith Eu sei que seu comentário foi escrito há muito tempo. Mas por que você acha isso estranho ou inútil? Por que eu desejaria criar um formulário se o controle não estiver se comunicando com um servidor?
Adam-beck

18
O que é um "controle bem-sucedido"?
AlikElzin-Kilaka

22
Quando um formulário é enviado para processamento, alguns controles têm seu nome emparelhado com seu valor atual e esses pares são enviados com o formulário. Os controles para os quais os pares nome / valor são enviados são chamados de controles bem-sucedidos. w3c
SantiBailors 12/11/2015

3
@ adam-beck Por exemplo, um determinado site do AngularJS lida com entradas, manipula dados e os envia para uma API. Os modelos HTML para formulários podem ser escritos sem nenhuma tag de formulário e eles se comunicam com o servidor.
Sr9yar

75

Eu verifiquei o seguinte com o validador W3C e ele confirma que isso é válido.

<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
  <input type='text' />
</body>
</html>

6

Referência a uma especificação mais atualizada:

HTML 5.2 - Recomendação do W3C (14 de dezembro de 2017)

Um elemento associado ao formulário pode ter um relacionamento com um <form>elemento, chamado de proprietário do formulário. Se um elemento associado ao formulário não estiver associado a um <form>elemento, seu proprietário do formulário será considerado nulo.


4

De acordo com o MDN, é possível:

Observe que sempre é possível usar um widget de formulário fora de um elemento, mas se você o fizer, esse widget de formulário não tem nada a ver com nenhum formulário. Esses widgets podem ser usados ​​fora de um formulário, mas você deve ter um plano especial para tais widgets, pois eles não farão nada por si mesmos. Você precisará personalizar o comportamento deles com JavaScript.

O HTML5 apresenta o atributo do formulário nos elementos do formulário HTML. Ele deve permitir que você vincule explicitamente um elemento a um formulário, mesmo que não esteja dentro de uma tag de formulário. Infelizmente, por enquanto, a implementação desse recurso nos navegadores ainda não é boa o suficiente para confiar nele.


2

Sei que essa pergunta é bastante antiga, no entanto, criei com êxito muitas páginas de entrada de dados complexas sem tags de formulário. Embora não seja considerado "padrão" por muitos, NÃO é inapropriado usar entradas sem a <form>. Meus projetos foram instâncias em que eu precisava de controle completo sobre como a página se comportava e o comportamento padrão do formulário estava atrapalhando. Consegui realizar a validação no nível da página e do campo (usando JS) e "enviou" os dados com chamadas do Ajax, etc ... de fato, esta é a minha maneira preferida atualmente.

É necessário muito JS, mas não é tão difícil e é fácil como código reutilizável.

Também existem outros casos em que eu NÃO uso formulários com entradas como Páginas de login.

Espero que este depoimento ajude alguém.


1

Sim, você pode ter uma entrada válida sem um formulário.


14
Bem, você poderia ter acrescentado alguma evidência por trás do 'sim'. Ou um esclarecimento de quais versões do HTML são verdadeiras. Ainda assim, eu não teria te rebaixado.
Adriano Varoli Piazza 21/07

9
Então, com o seu raciocínio, por que ter SO, se o usuário pode simplesmente ir para o W3 e procurar por ele mesmo? Também não teria votado contra você, mas teria que concordar que aquele com mais explicações de maneira clara e concisa recebe o voto positivo, porque uma explicação e a resposta correta são as mais úteis aqui na SO.
Mattygabe

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.