Existe uma maneira rápida de criar um elemento de texto de entrada com um ícone à direita para limpar o próprio elemento de entrada (como a caixa de pesquisa do Google)?
Olhei em volta, mas só descobri como colocar um ícone como plano de fundo do elemento de entrada. Existe um plugin jQuery ou algo mais?
Eu quero o ícone dentro do elemento de entrada de texto, algo como:
--------------------------------------------------
| X|
--------------------------------------------------
javascript
jquery
html
css
Giovanni Di Milia
fonte
fonte
Respostas:
Adicione um
type="search"
a sua entradaO suporte é bastante decente, mas não funcionará no IE <10
Entrada limpa para navegadores antigos
Se você precisar de suporte ao IE9, aqui estão algumas soluções alternativas
Usando um padrão
<input type="text">
e alguns elementos HTML:Usando apenas um
<input class="clearable" type="text">
(sem elementos adicionais)defina
class="clearable"
e brinque com a imagem de fundo:demonstração do jsBin
O truque é definir o preenchimento certo (usei 18px) para
input
e empurre a imagem de fundo para a direita, fora da vista (useiright -10px center
).Esse preenchimento de 18 pixels impedirá que o texto oculte embaixo do ícone (enquanto visível).
O jQ adicionará a classe
x
(seinput
tiver valor) mostrando o ícone claro.Agora tudo o que precisamos é direcionar com jQ as entradas com classe
x
e detectarmousemove
se o mouse está dentro dessa área de 18px "x"; se estiver dentro, adicione a classeonX
.Clicar na
onX
classe remove todas as classes, redefine o valor de entrada e oculta o ícone.Gif 7x7px:
String Base64:
fonte
.on('touchstart click', '.onX', ...
para.on('touchstart click', '.onX, .x', ...
fazê-lo funcionar no iOS.Eu poderia sugerir, se você concorda com isso, sendo limitado a navegadores compatíveis com html 5, basta usar:
Demonstração JS Fiddle
É certo que, no Chromium (Ubuntu 11.04), isso exige que haja texto dentro do
input
elemento antes que a imagem / funcionalidade em texto não criptografado apareça.Referência:
fonte
Você pode usar um botão de redefinição com uma imagem ...
Veja em ação aqui: http://jsbin.com/uloli3/63
fonte
Eu criei uma caixa de texto que pode ser limpa em apenas CSS. Não requer código javascript para fazê-lo funcionar
abaixo está o link de demonstração
http://codepen.io/shidhincr/pen/ICLBD
fonte
De acordo com o MDN ,
<input type="search" />
atualmente é suportado em todos os navegadores modernos:No entanto, se você deseja um comportamento diferente e consistente entre os navegadores, aqui estão algumas alternativas leves que exigem apenas JavaScript:
Opção 1 - sempre exibir o 'x': (exemplo aqui)
Opção 2 - Exibir apenas o 'x' ao passar o mouse sobre o campo: (exemplo aqui)
Opção 3 - Exiba apenas 'x' se o
input
elemento tiver um valor: (exemplo aqui)fonte
Como nenhuma das soluções disponíveis atendeu a nossos requisitos, criamos um plugin simples do jQuery chamado jQuery-ClearSearch -
usá-lo é tão fácil quanto:
Exemplo: http://jsfiddle.net/wldaunfr/FERw3/
fonte
EDIT: Encontrei este link. Espero que ajude. http://viralpatel.net/blogs/2011/02/clearable-textbox-jquery.html
Você mencionou que deseja o item à direita do texto de entrada. Portanto, a melhor maneira seria criar uma imagem ao lado da caixa de entrada. Se você estiver procurando algo dentro da caixa, poderá usar a imagem de plano de fundo, mas talvez não seja capaz de escrever um script para limpar a caixa.
Então, insira e crie uma imagem e escreva um código JavaScript para limpar a caixa de texto.
fonte
<input type="text" name="Search" value="Search..." onclick="this.value='';">
Se você quiser como o Google, saiba que o "X" não está realmente dentro do
<input>
- eles estão próximos um do outro com o recipiente externo estilizado para aparecer como a caixa de texto.HTML:
CSS:
Exemplo: http://jsfiddle.net/VTvNX/
fonte
Algo assim??
Jsfiddle Demo
fonte
fonte
Você pode fazer com estes comandos (sem o Bootstrap).
fonte
Aqui está um plugin jQuery (e uma demonstração no final).
http://jsfiddle.net/e4qhW/3/
Fiz isso principalmente para ilustrar um exemplo (e um desafio pessoal). Embora os votos positivos sejam bem-vindos, as outras respostas são bem dadas dentro do prazo e merecem o devido reconhecimento.
Ainda assim, na minha opinião, é um excesso de engenharia (a menos que faça parte de uma biblioteca de interface do usuário).
fonte
x
botãoEu escrevi um componente simples usando jQuery e bootstrap. Experimente: https://github.com/mahpour/bootstrap-input-clear-button
fonte
Usando um plugin jquery, eu o adaptei às minhas necessidades, adicionando opções personalizadas e criando um novo plugin. Você pode encontrá-lo aqui: https://github.com/david-dlc-cerezo/jquery-clearField
Um exemplo de uso simples:
Obtendo algo parecido com isto:
fonte
O jQuery Mobile agora tem isso incorporado:
Documentos do TextInput da API do Jquery Mobile
fonte
Não há necessidade de incluir arquivos de imagem ou CSS. Não é necessário incluir toda a biblioteca de UI do jQuery para artilharia pesada. Eu escrevi um plugin jQuery leve que faz a mágica para você. Tudo que você precisa é
jQuery
e o plugin . =)Brinque aqui: demonstração do jQuery InputSearch .
fonte