Quando necessário é definido em um campo de formulário, o Firefox 4 mostra automaticamente uma borda vermelha para este elemento, mesmo ANTES de o usuário clicar no botão enviar.
<input type="text" name="example" value="This is an example" required />
Acho que isso é preocupante para o usuário, pois ele não cometeu erros no início.
Eu quero ocultar essa borda vermelha para o estado inicial, mas mostrá-la quando o usuário clicar no botão enviar, se houver um campo ausente marcado como obrigatório.
Eu olhei para :required
e :invalid
do novo pseudo seletor, mas as mudanças são para antes E depois da validação. (do Firefox 4 Formulário de entrada obrigatório borda / contorno VERMELHO )
Existe uma maneira de desativar a borda vermelha antes de o usuário enviar o formulário e mostrá-la se houver alguns campos ausentes?
attributes
border
firefox4
required
Cyril N.
fonte
fonte
Respostas:
Isso foi um pouco complicado, mas criei este exemplo: http://jsfiddle.net/c5aTe/ que está funcionando para mim. Basicamente, o truque parece ser contornar o texto de espaço reservado que é inválido. Caso contrário, você deve ser capaz de fazer o seguinte:
ou algo parecido ...
MAS desde que FF4 decide validar seu texto de espaço reservado (não tenho ideia por que ...) a solução no fiddle (pequeno hacky - usa
!important
) é necessária.Espero que ajude!
EDITAR
Doh !! - Eu me sinto bem bobo. Eu atualizei meu violino: http://jsfiddle.net/c5aTe/2/ - você pode usar o
:focus
pseudo classe para manter o estilo do elemento como válido enquanto o usuário está digitando. Isso ainda será destacado em vermelho se o conteúdo for inválido quando o item perder o foco, mas acho que há muito que você pode fazer com o comportamento projetado ...HTH :)
EDITAR após aceitação:
Resumo dos exemplos a pedido do OP (observe que os dois primeiros são projetados apenas para FF4 - não para Chrome )
fonte
No Firefox 26, o CSS real usado para identificar campos obrigatórios inválidos é o seguinte (vem de forms.css):
Para replicar em outros navegadores, eu uso:
Eu brinquei com as configurações de pixel, mas nunca teria adivinhado 1.5px sem olhar para a fonte moz.
Para desativá-lo, você pode usar:
fonte
:not(output):-moz-ui-invalid
nãoinput:not(output):-moz-ui-invalid
para aqueles que tentou gostou disso.Experimentar:
fonte
Aqui está uma solução muito fácil que funcionou para mim. Basicamente, mudei o vermelho feio para um azul muito bonito, que é a cor padrão para campos não obrigatórios e uma convenção da web:
fonte
Isto funcionou bem para mim:
fonte
Por favor, tente isso,
$ ("formulário"). attr ("novalidate", verdadeiro);
para o seu formulário no arquivo .js global ou na seção de cabeçalho.
fonte
Uma maneira que descobri de pelo menos consertar principalmente o problema é:
Dessa forma, o campo de entrada começa com aquele belo contorno azul, mas quando o usuário insere um caractere, ele é definido como obrigatório (se você inserir um caractere e retroceder, a borda vermelha estará lá). Nesse caso, é possível que um usuário ignore a entrada, portanto, certifique-se de colocar a validação de back-end no lugar se fizer isso.
fonte