En HTML5, el search
tipo de entrada aparece con una pequeña X a la derecha que borrará el cuadro de texto (al menos en Chrome, tal vez otros). ¿Hay alguna forma de detectar cuándo se hace clic en esta X en Javascript o jQuery que no sea, por ejemplo, detectar cuándo se hace clic en el cuadro o hacer algún tipo de ubicación para detectar clics (posición x / posición y)?
javascript
jquery
html
events
dom-events
Jason
fuente
fuente
onchange
evento?Respuestas:
En realidad, hay un evento de "búsqueda" que se activa cada vez que el usuario busca, o cuando el usuario hace clic en la "x". Esto es especialmente útil porque comprende el atributo "incremental".
Ahora, habiendo dicho eso, no estoy seguro si puedes notar la diferencia entre hacer clic en la "x" y buscar, a menos que uses un truco "onclick". De cualquier manera, espero que esto ayude.
fuente
search
ocurre un evento que no sea cuando haces clic en la 'x'. Parece que no se enciendekeyup
,blur
o cuando se envía el formulario en el que se encuentra. Pero esto merece ser marcado como una respuesta.search
evento debe activarse cuando el usuario presionaEnter
. Y si el cuadro de búsqueda tiene elincremental
atributo, también se activará cuando el usuario deje de escribir por un segundo.input
evento pero no elsearch
evento.Enlace
search
-event el cuadro de búsqueda como se indica a continuación-fuente
Quiero añadir una respuesta "tarde", porque luché con
change
,keyup
ysearch
hoy, y tal vez lo que he encontrado al final puede ser útil para otros también. Básicamente, tengo un panel de búsqueda como tipo, y solo quería reaccionar adecuadamente a la presión de la pequeña X (en Chrome y Opera, FF no lo implementa), y borrar un panel de contenido como resultado.Tenía este código:
(Están separados porque quería comprobar cuándo y en qué circunstancias se llamó a cada uno).
Resulta que Chrome y Firefox reaccionan de manera diferente. En particular, Firefox lo trata
change
como "cada cambio en la entrada", mientras que Chrome lo trata como "cuando se pierde el foco Y se cambia el contenido". Entonces, en Chrome, la función "panel de actualización" se llamó una vez, en FF dos veces por cada pulsación de tecla (una enkeyup
, una enchange
)Además, al borrar el campo con la pequeña X (que no está presente en FF) se activó el
search
evento en Chrome: nokeyup
, nochange
.¿La conclusión? Use en su
input
lugar:Funciona con el mismo comportamiento en todos los navegadores que probé, reaccionando a cada cambio en el contenido de entrada (copiar y pegar con el mouse, autocompletar y "X" incluidos).
fuente
change
evento como Chrome, disparando solo en Enter o foco perdido.Usando la respuesta de Pauan, es principalmente posible. Ex.
fuente
change
evento no se dispara hasta queblur
básicamente. Simplemente hacer clic en el(x)
interior del campo de búsqueda de Chrome no parece activar ningún evento para mí. Después de una investigación más profunda (y de leer los comentarios a continuación) me puseclick
a trabajar para mí. Así$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
funciona de mi parte$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
también se activaría cuando el usuario haga clic en el campo de entrada.Sé que esta es una vieja pregunta, pero estaba buscando algo similar. Determine cuándo se hizo clic en la 'X' para borrar el cuadro de búsqueda. Ninguna de las respuestas aquí me ayudó en absoluto. Uno estaba cerca, pero también se vio afectado cuando el usuario presionó el botón 'enter', dispararía el mismo resultado que hacer clic en la 'X'.
Encontré esta respuesta en otra publicación y funciona perfecto para mí y solo se activa cuando el usuario borra el cuadro de búsqueda.
fuente
Tenía sentido para mí que hacer clic en la X debería contar como un evento de cambio. Ya tenía el evento onChange configurado para hacer lo que necesitaba que hiciera. Entonces, para mí, la solución fue simplemente hacer esta línea jQuery:
$('#search').click(function(){ $(this).change(); });
fuente
if (this.value === "") { ... }
No parece que puedas acceder a esto en el navegador. La entrada de búsqueda es un contenedor HTML de Webkit para Cocoa NSSearchField. El botón cancelar parece estar contenido en el código del cliente del navegador sin ninguna referencia externa disponible del reiniciador.
Fuentes:
Parece que tendrá que resolverlo mediante la posición del mouse al hacer clic con algo como:
fuente
Encontré esta publicación y me doy cuenta de que es un poco vieja, pero creo que podría tener una respuesta. Esto maneja el clic en la cruz, retrocediendo y presionando la tecla ESC. Estoy seguro de que probablemente podría escribirse mejor, todavía soy relativamente nuevo en JavaScript. Esto es lo que terminé haciendo: estoy usando jQuery (v1.6.4):
fuente
prueba esto, espero ayudarte
fuente
Creo que esta es la única respuesta que se activa SOLO cuando se hace clic en la x.
Sin embargo, es un poco hacky y la respuesta de ggutenberg funcionará para la mayoría de las personas.
¿Dónde
'#search-field'
está el selector jQuery para su entrada? Use'input[type=search]'
para seleccionar todas las entradas de búsqueda. Funciona al buscar un evento de búsqueda (la respuesta de Pauan) inmediatamente después de hacer clic en el campo.fuente
La solución completa está aquí
Esto borrará la búsqueda cuando se haga clic en la búsqueda x. o llamará a la búsqueda api hit cuando el usuario presione enter este código puede ampliarse aún más con el igualador de eventos de keyup adicional esc. Pero esto debería hacerlo todo.
Salud.
fuente
basado en el bucle de eventos de js, el
click
botón de activación activará elsearch
evento en la entrada , por lo que el código siguiente funcionará como se esperaba:El código anterior, evento onclick , reservó un
this._cleared = false
bucle de evento, pero el evento siempre se ejecutará después delonsearch
evento, por lo que puede verificar de manera estable elthis._cleared
estado para determinar si el usuario simplemente hizo clic en elX
botón y luego activó unonsearch
evento.Esto puede funcionar en casi todas las condiciones , el texto pegado , tiene un atributo incremental , presionar la tecla ENTER / ESC , etc.
fuente
Aquí hay una forma de lograr esto. Debe agregar un atributo incremental a su html o no funcionará.
fuente
ECMASCRIPT 2016
fuente
La búsqueda u onclick funciona ... pero el problema que encontré fue con los navegadores más antiguos: la búsqueda falla. Muchos complementos (jquery ui autocomplete o fancytree filter) tienen controladores de desenfoque y enfoque. Agregar esto a un cuadro de entrada de autocompletar funcionó para mí (usé this.value == "" porque fue más rápido de evaluar). El desenfoque y luego el foco mantienen el cursor en el cuadro cuando presionas la pequeña 'x'.
PropertyChange y la entrada funcionaron tanto para IE 10 como para IE 8, así como para otros navegadores:
Para la extensión de filtro FancyTree, puede usar un botón de reinicio y forzar su evento de clic de la siguiente manera:
Debería poder adaptar esto para la mayoría de los usos.
fuente
Al hacer clic en el botón cruzado TextField (X) onmousemove () se dispara, podemos usar este evento para llamar a cualquier función.
fuente