Existe-t-il un moyen rapide de créer un élément de texte d'entrée avec une icône à droite pour effacer l'élément d'entrée lui-même (comme le champ de recherche Google)?
J'ai regardé autour de moi mais je n'ai trouvé que comment mettre une icône comme arrière-plan de l'élément d'entrée. Existe-t-il un plugin jQuery ou autre chose?
Je veux l'icône à l'intérieur de l'élément de texte d'entrée, quelque chose comme:
--------------------------------------------------
| X|
--------------------------------------------------
javascript
jquery
html
css
Giovanni Di Milia
la source
la source
Réponses:
Ajoutez un
type="search"
à votre entréeLe support est assez correct mais ne fonctionnera pas dans IE <10
Entrée effaçable pour les anciens navigateurs
Si vous avez besoin du support IE9, voici quelques solutions de contournement
En utilisant un standard
<input type="text">
et quelques éléments HTML:En utilisant uniquement un
<input class="clearable" type="text">
(aucun élément supplémentaire)définir un
class="clearable"
et jouer avec son image d'arrière-plan:Démo jsBin
L'astuce consiste à définir un rembourrage à droite (j'ai utilisé 18px)
input
et à pousser l'image d'arrière-plan à droite, hors de vue (j'ai utiliséright -10px center
).Ce remplissage de 18 pixels empêchera le texte de se cacher sous l'icône (lorsqu'il est visible).
jQ ajoutera la classe
x
(siinput
a une valeur) affichant l'icône d'effacement.Maintenant, tout ce dont nous avons besoin est de cibler avec jQ les entrées avec class
x
et de détectermousemove
si la souris est à l'intérieur de cette zone "x" de 18px; s'il est à l'intérieur, ajoutez la classeonX
.Cliquer sur la
onX
classe supprime toutes les classes, réinitialise la valeur d'entrée et masque l'icône.Gif 7x7px:
Chaîne en base64:
la source
.on('touchstart click', '.onX', ...
pour.on('touchstart click', '.onX, .x', ...
le faire fonctionner sur iOS.Pourrais-je suggérer, si vous êtes d'accord avec le fait que cela soit limité aux navigateurs compatibles html 5, en utilisant simplement:
Démo JS Fiddle
Certes, dans Chromium (Ubuntu 11.04), cela nécessite qu'il y ait du texte à l'intérieur de l'
input
élément avant l'image / la fonctionnalité en texte clair n'apparaisse.Référence:
la source
Vous pouvez utiliser un bouton de réinitialisation avec une image ...
Voyez-le en action ici: http://jsbin.com/uloli3/63
la source
J'ai créé une zone de texte effaçable uniquement en CSS. Il ne nécessite aucun code javascript pour le faire fonctionner
ci-dessous est le lien de démonstration
http://codepen.io/shidhincr/pen/ICLBD
la source
Selon MDN ,
<input type="search" />
est actuellement pris en charge dans tous les navigateurs modernes:Cependant, si vous voulez un comportement différent qui soit cohérent entre les navigateurs, voici quelques alternatives légères qui ne nécessitent que JavaScript:
Option 1 - Toujours afficher le 'x': (exemple ici)
Option 2 - Afficher uniquement le 'x' lorsque vous survolez le champ: (exemple ici)
Option 3 - N'afficher le 'x' que si l'
input
élément a une valeur: (exemple ici)la source
Comme aucune des solutions volantes ne répondait vraiment à nos exigences, nous avons mis au point un simple plugin jQuery appelé jQuery-ClearSearch -
l'utiliser est aussi simple que:
Exemple: http://jsfiddle.net/wldaunfr/FERw3/
la source
EDIT: j'ai trouvé ce lien. J'espère que ça aide. http://viralpatel.net/blogs/2011/02/clearable-textbox-jquery.html
Vous avez mentionné que vous le souhaitez à droite du texte d'entrée. Ainsi, le meilleur moyen serait de créer une image à côté de la zone de saisie. Si vous cherchez quelque chose à l'intérieur de la boîte, vous pouvez utiliser l'image d'arrière-plan, mais vous ne pourrez peut-être pas écrire un script pour effacer la boîte.
Alors, insérez et image et écrivez un code JavaScript pour effacer la zone de texte.
la source
<input type="text" name="Search" value="Search..." onclick="this.value='';">
Si vous le souhaitez comme Google, sachez que le "X" ne se trouve pas réellement à l'intérieur du
<input>
- ils sont côte à côte avec le conteneur extérieur conçu pour apparaître comme la zone de texte.HTML:
CSS:
Exemple: http://jsfiddle.net/VTvNX/
la source
Quelque chose comme ça??
Démo Jsfiddle
la source
la source
Vous pouvez le faire avec ces commandes (sans Bootstrap).
la source
Voici un plugin jQuery (et une démo à la fin).
http://jsfiddle.net/e4qhW/3/
Je l'ai fait principalement pour illustrer un exemple (et un défi personnel). Bien que les votes positifs soient les bienvenus, les autres réponses sont bien distribuées à temps et méritent leur reconnaissance.
Pourtant, à mon avis, c'est un ballonnement sur-conçu (à moins qu'il ne fasse partie d'une bibliothèque d'interface utilisateur).
la source
x
boutonJ'ai écrit un composant simple en utilisant jQuery et bootstrap. Essayez-le: https://github.com/mahpour/bootstrap-input-clear-button
la source
En utilisant un plugin jquery, je l'ai adapté à mes besoins en ajoutant des options personnalisées et en créant un nouveau plugin. Vous pouvez le trouver ici: https://github.com/david-dlc-cerezo/jquery-clearField
Un exemple d'utilisation simple:
Obtenir quelque chose comme ça:
la source
jQuery Mobile a maintenant ceci intégré:
Documents TextInput de l'API Jquery Mobile
la source
Pas besoin d'inclure des fichiers CSS ou image. Inutile d'inclure toute la bibliothèque d'interface utilisateur jQuery d'artillerie lourde. J'ai écrit un plugin jQuery léger qui fait la magie pour vous. Tout ce dont vous avez besoin est
jQuery
et le plugin . =)Fiddle ici: démo jQuery InputSearch .
la source