En HTML5, le search
type d'entrée apparaît avec un petit X sur la droite qui effacera la zone de texte (au moins dans Chrome, peut-être d'autres). Existe-t-il un moyen de détecter le moment où ce X est cliqué dans Javascript ou jQuery autre que, par exemple, détecter le moment où la case est cliquée ou faire une sorte de détection de clic d'emplacement (position x / position y)?
154
onchange
événement?Réponses:
En fait, il y a un événement de «recherche» qui est déclenché chaque fois que l'utilisateur recherche, ou lorsque l'utilisateur clique sur le «x». Ceci est particulièrement utile car il comprend l'attribut "incrémental".
Maintenant, cela dit, je ne suis pas sûr que vous puissiez faire la différence entre cliquer sur le «x» et rechercher, à moins que vous n'utilisiez un hack «onclick». Dans tous les cas, j'espère que cela aide.
la source
search
je ne peux pas savoir quand l' événement se produit autrement que lorsque vous cliquez sur le 'x' Il ne semble pas tirer surkeyup
,blur
ou quand il est en forme est soumis. Mais cela mérite d'être marqué comme une réponse.search
événement doit se déclencher lorsque l'utilisateur appuie surEnter
. Et si la zone de recherche a l'incremental
attribut, elle se déclenchera également lorsque l'utilisateur arrête de taper pendant une seconde.input
événement mais pas l'search
événement.Liez
search
-évitez le champ de recherche comme indiqué ci-dessous-la source
Je veux ajouter une réponse «tardive», parce que j'ai eu du mal avec
change
,keyup
etsearch
aujourd'hui, et peut-être que ce que j'ai trouvé à la fin peut être utile pour d'autres aussi. En gros, j'ai un panneau de recherche en tant que type, et je voulais juste réagir correctement à la presse du petit X (sous Chrome et Opera, FF ne l'implémente pas), et effacer un volet de contenu en conséquence.J'avais ce code:
(Ils sont séparés car je voulais vérifier quand et dans quelles circonstances chacun était appelé).
Il s'avère que Chrome et Firefox réagissent différemment. En particulier, Firefox traite
change
comme «chaque modification apportée à l'entrée», tandis que Chrome la traite comme «lorsque le focus est perdu ET que le contenu est modifié». Ainsi, sur Chrome, la fonction "panneau de mise à jour" a été appelée une fois, sur FF deux fois pour chaque frappe (une entréekeyup
, une entréechange
)De plus, effacer le champ avec le petit X (qui n'est pas présent sous FF) a déclenché l'
search
événement sous Chrome: nonkeyup
, nonchange
.La conclusion? Utilisez à la
input
place:Il fonctionne avec le même comportement sous tous les navigateurs que j'ai testés, réagissant à chaque changement dans le contenu d'entrée (copier-coller avec la souris, saisie semi-automatique et "X" inclus).
la source
change
événement comme Chrome, ne tirant que sur Enter ou focus perdu.En utilisant la réponse de Pauan, c'est la plupart du temps possible. Ex.
la source
change
événement ne se déclenche qu'enblur
gros. Le simple fait de cliquer sur l'(x)
intérieur du champ de recherche de Chrome ne semble déclencher aucun événement pour moi. Après une enquête plus approfondie (et la lecture des commentaires ci-dessous), je me suis misclick
à travailler pour moi. Alors ça$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
marche de ma fin$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
se déclencherait également lorsque l'utilisateur clique dans le champ de saisie.Je sais que c'est une vieille question, mais je cherchais la même chose. Déterminez quand vous avez cliqué sur le «X» pour effacer la zone de recherche. Aucune des réponses ici ne m'a aidé du tout. L'un était proche mais également affecté lorsque l'utilisateur cliquait sur le bouton «Entrée», il déclencherait le même résultat qu'en cliquant sur le «X».
J'ai trouvé cette réponse sur un autre article et cela fonctionne parfaitement pour moi et ne se déclenche que lorsque l'utilisateur efface le champ de recherche.
la source
Il me semblait logique que cliquer sur le X soit considéré comme un événement de changement. J'avais déjà organisé l'événement onChange pour faire ce dont j'avais besoin. Donc, pour moi, le correctif consistait simplement à faire cette ligne jQuery:
$('#search').click(function(){ $(this).change(); });
la source
if (this.value === "") { ... }
Il ne semble pas que vous puissiez y accéder dans le navigateur. L'entrée de recherche est un wrapper HTML Webkit pour Cocoa NSSearchField. Le bouton d'annulation semble être contenu dans le code client du navigateur sans référence externe disponible à partir du wrapper.
Sources:
On dirait que vous devrez le comprendre en positionnant la souris sur un clic avec quelque chose comme:
la source
J'ai trouvé ce post et je me rends compte qu'il est un peu vieux, mais je pense que j'ai peut-être une réponse. Cela gère le clic sur la croix, le recul et la frappe sur la touche ESC. Je suis sûr que cela pourrait probablement être mieux écrit - je suis encore relativement nouveau en javascript. Voici ce que j'ai fini par faire - j'utilise jQuery (v1.6.4):
la source
essayez ceci, j'espère vous aider
la source
Je crois que c'est la seule réponse qui se déclenche UNIQUEMENT lorsque le x est cliqué.
Cependant, c'est un peu hacky et la réponse de ggutenberg fonctionnera pour la plupart des gens.
Où
'#search-field'
est le sélecteur jQuery pour votre entrée. Utilisez'input[type=search]'
pour sélectionner toutes les entrées de recherche. Fonctionne en recherchant un événement de recherche (réponse de Pauan) immédiatement après un clic sur le champ.la source
La solution complète est là
Cela effacera la recherche lorsque vous cliquerez sur la recherche x. ou appellera l'API de recherche lorsque l'utilisateur appuiera sur Entrée. ce code peut être encore étendu avec un matcher d'événement de keyup supplémentaire. mais cela devrait tout faire.
À votre santé.
la source
basé sur la boucle d'événement de js, le
click
bouton on clear déclenchera l'search
événement sur l' entrée , donc le code ci-dessous fonctionnera comme prévu:Le code ci-dessus, l' événement onclick a réservé une
this._cleared = false
boucle d'événements, mais l'événement sera toujours exécuté après l'onsearch
événement, vous pouvez donc vérifier de manière stable l'this._cleared
état pour déterminer si l'utilisateur a simplement cliqué sur leX
bouton puis déclenché unonsearch
événement.Cela peut fonctionner sur presque toutes les conditions , texte collé , attribut incrémentiel , touche ENTER / ESC , etc.
la source
Voici un moyen d'y parvenir. Vous devez ajouter un attribut incrémentiel à votre html ou cela ne fonctionnera pas.
la source
ECMASCRIPT 2016
la source
La recherche ou onclick fonctionne ... mais le problème que j'ai trouvé était avec les anciens navigateurs - la recherche échoue. De nombreux plugins (jquery ui autocomplete ou fancytree filter) ont des gestionnaires de flou et de focus. L'ajout de ceci à une boîte de saisie de saisie semi-automatique a fonctionné pour moi (utilisé this.value == "" car il était plus rapide à évaluer). Le flou puis la mise au point gardaient le curseur dans la case lorsque vous frappiez le petit «x».
Le PropertyChange et l'entrée ont fonctionné pour IE 10 et IE 8 ainsi que pour d'autres navigateurs:
Pour l'extension de filtre FancyTree, vous pouvez utiliser un bouton de réinitialisation et forcer son événement de clic comme suit:
Devrait pouvoir l'adapter à la plupart des utilisations.
la source
Lors d'un clic sur le bouton croisé TextField (X) onmousemove () est déclenché, nous pouvons utiliser cet événement pour appeler n'importe quelle fonction.
la source