No HTML5, o search
tipo de entrada aparece com um pequeno X à direita que limpa a caixa de texto (pelo menos no Chrome, talvez outros). Existe uma maneira de detectar quando esse X é clicado em Javascript ou jQuery, além de, digamos, detectar quando a caixa é clicada ou fazer algum tipo de localização de detecção de cliques (posição x / posição y)?
javascript
jquery
html
events
dom-events
Jason
fonte
fonte
onchange
evento?Respostas:
Na verdade, há um evento de "pesquisa" que é acionado sempre que o usuário pesquisa ou quando o usuário clica no "x". Isso é especialmente útil porque compreende o atributo "incremental".
Agora, tendo dito isso, não tenho certeza se você sabe a diferença entre clicar no "x" e pesquisar, a menos que use um hack "onclick". De qualquer maneira, espero que isso ajude.
fonte
search
evento acontece, exceto quando você clica no 'x'. Não parece a disparar contrakeyup
,blur
ou quando formarem está em é submetido. Mas isso merece ser marcado como resposta.search
evento deve disparar quando o usuário pressionarEnter
. E se a caixa de pesquisa tiver oincremental
atributo, ela também será acionada quando o usuário parar de digitar por um segundo.input
evento, mas não osearch
evento.Vincule -
search
evite a caixa de pesquisa conforme indicado abaixo -fonte
Quero adicionar uma resposta "tardia", porque lutei com
change
,keyup
esearch
hoje, e talvez o que encontrei no final também possa ser útil para outras pessoas. Basicamente, tenho um painel de pesquisa como tipo e só queria reagir adequadamente à pressão do pequeno X (no Chrome e Opera, o FF não o implementa) e limpar um painel de conteúdo como resultado.Eu tinha esse código:
(Eles são separados porque eu queria verificar quando e sob quais circunstâncias cada um foi chamado).
Acontece que o Chrome e o Firefox reagem de maneira diferente. Em particular, o Firefox trata
change
como "todas as alterações na entrada", enquanto o Chrome trata como "quando o foco é perdido E o conteúdo é alterado". Portanto, no Chrome, a função "painel de atualização" foi chamada uma vez, no FF duas vezes para cada pressionamento de tecla (uma emkeyup
umachange
)Além disso, limpar o campo com o pequeno X (que não está presente no FF) disparou o
search
evento no Chrome: nãokeyup
, nãochange
.A conclusão? Usar
input
vez disso:Ele funciona com o mesmo comportamento em todos os navegadores que testei, reagindo a cada alteração no conteúdo de entrada (copiar e colar com o mouse, preenchimento automático e "X" incluídos).
fonte
change
evento como o Chrome, disparando apenas no Enter ou no foco perdido.Usando a resposta de Pauan, é quase sempre possível. Ex.
fonte
change
evento não é acionado atéblur
basicamente. Simplesmente clicar no(x)
interior do campo de pesquisa do Chrome não parece disparar nenhum evento para mim. Após uma investigação mais aprofundada (e lendo os comentários abaixo) , comeceiclick
a trabalhar para mim. Portanto,$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
funciona do meu lado #$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
também seria acionado quando o usuário clicar no campo de entrada.Sei que essa é uma pergunta antiga, mas estava procurando a mesma coisa. Determine quando o 'X' foi clicado para limpar a caixa de pesquisa. Nenhuma das respostas aqui me ajudou em tudo. Um estava próximo, mas também foi afetado quando o usuário pressionou o botão 'enter', o mesmo resultado seria acionado ao clicar no 'X'.
Encontrei esta resposta em outro post e ela funciona perfeita para mim e só é acionada quando o usuário limpa a caixa de pesquisa.
fonte
Fazia sentido para mim que clicar no X deveria contar como um evento de mudança. Eu já tinha o evento onChange configurado para fazer o que eu precisava. Então, para mim, a correção era simplesmente fazer esta linha do jQuery:
$('#search').click(function(){ $(this).change(); });
fonte
if (this.value === "") { ... }
Não parece que você possa acessar isso no navegador. A entrada de pesquisa é um wrapper HTML do Webkit para o Cocoa NSSearchField. O botão Cancelar parece estar contido no código do cliente do navegador, sem referência externa disponível no wrapper.
Fontes:
Parece que você terá que descobrir através da posição do mouse no clique com algo como:
fonte
Encontrei este post e percebo que é um pouco antigo, mas acho que posso ter uma resposta. Isso lida com o clique na cruz, retrocedendo e pressionando a tecla ESC. Tenho certeza de que provavelmente poderia ser melhor escrito - ainda sou relativamente novo em javascript. Aqui está o que eu acabei fazendo - estou usando o jQuery (v1.6.4):
fonte
tente isso, espero ajudá-lo
fonte
Acredito que esta é a única resposta que é acionada APENAS quando o x é clicado.
No entanto, é um pouco hacky e a resposta de Ggutenberg funcionará para a maioria das pessoas.
Onde
'#search-field'
está o seletor jQuery para sua entrada. Use'input[type=search]'
para selecionar todas as entradas de pesquisa. Funciona verificando um evento de pesquisa (resposta de Pauan) imediatamente após um clique no campo.fonte
A solução completa está aqui
Isso limpará a pesquisa quando a pesquisa x for clicada. ou chamará a api de pesquisa pressionada quando o usuário pressionar enter. esse código pode ser estendido ainda mais com o comparador de eventos esc keyup adicional. mas isso deve fazer tudo.
Felicidades.
fonte
com base no loop de eventos de js, o
click
botão on clear acionará osearch
evento na entrada ; portanto, o código abaixo funcionará conforme o esperado:O código acima, evento onclick , registrou um
this._cleared = false
loop de eventos, mas o evento sempre será executado após oonsearch
evento, para que você possa verificar de forma estável othis._cleared
status para determinar se o usuário acabou de clicar noX
botão e, em seguida, acionou umonsearch
evento.Isso pode funcionar em quase todas as condições , texto colado , tem atributo incremental , pressionar a tecla ENTER / ESC etc.
fonte
Aqui está uma maneira de conseguir isso. Você precisa adicionar um atributo incremental ao seu html ou ele não funcionará.
fonte
ECMASCRIPT 2016
fonte
A pesquisa ou o onclick funcionam ... mas o problema encontrado foi nos navegadores mais antigos - a pesquisa falha. Muitos plug-ins (preenchimento automático da interface do usuário jquery ou filtro de fantasia) têm manipuladores de desfoque e foco. Adicionar isso a uma caixa de entrada de preenchimento automático funcionou para mim (usei this.value == "" porque era mais rápido para avaliar). O desfoque então o foco manteve o cursor na caixa quando você pressiona o pequeno 'x'.
O PropertyChange e a entrada funcionaram para o IE 10 e IE 8, bem como para outros navegadores:
Para a extensão do filtro FancyTree, você pode usar um botão de redefinição e forçar o evento de clique da seguinte maneira:
Deve ser capaz de adaptar isso para a maioria dos usos.
fonte
Ao clicar no botão cruzado TextField (X) onmousemove () é acionado, podemos usar esse evento para chamar qualquer função.
fonte