web-dev-qa-db-fra.com

type d'entrée = "texte" vs type d'entrée = "recherche" en HTML5

Je suis nouveau dans HTML5 car j'ai commencé à travailler avec les nouveaux champs de saisie de formulaire de HTML5. Lorsque je travaille avec des champs de saisie de formulaire, en particulier <input type="text" /> et <input type="search" /> IMO, il n'y avait aucune différence entre tous les principaux navigateurs, y compris Safari, Chrome, Firefox et Opera. Et le champ de recherche se comporte également comme un champ de texte normal.

Alors, quelle est la différence entre input type="text" et input type="search" en HTML5?

Quel est le but réel de <input type="search" />?

120
Vijin Paulraj

À l'heure actuelle, il n'y a pas d'énorme contrat entre eux - peut-être n'y en aura-t-il jamais. Cependant, le but est de donner aux constructeurs de navigateurs la possibilité de faire quelque chose de spécial avec cela, s'ils le souhaitent.

Penser à <input type="number"> sur un téléphone cellulaire, en utilisant les touches numériques ou type="email" apportant une version spéciale du clavier, avec @ et .com et le reste disponible.

Sur un téléphone portable, la recherche peut faire apparaître une applet de recherche interne, s’ils le souhaitent.

De l'autre côté, cela aide les développeurs actuels avec les CSS.

input[type=search]:after { content : url("magnifying-glass.gif"); }
165
Norguard

Cela ne fait absolument rien dans la plupart des navigateurs. Cela se comporte simplement comme une entrée de texte. Ce n'est pas un problème. La spécification ne nécessite pas de faire quelque chose de spécial. Les navigateurs WebKit le traitent un peu différemment, principalement avec le style.

Une entrée de recherche dans WebKit par défaut a une bordure incrustée, des coins arrondis et un contrôle typographique strict.

Aussi,

Ceci n'est documenté nulle part à ma connaissance ni dans les spécifications, mais si vous ajoutez un paramètre de résultat à l'entrée, WebKit appliquera une petite loupe avec une flèche déroulante affichant les résultats précédents.

<input type=search results=5 name=s>

référence

Surtout, il donne un sens sémantique à la input type.

Mise à jour:

Chrome 51 supprime la prise en charge de l'attribut results:

28
Jashwant

Visuellement/fonctionnellement, 2 différences si le type de saisie est 'recherche': -

  1. Vous obtenez un symbole ' X ' à la fin de la zone de saisie/recherche pour effacer les textes dans la zone.
  2. Appuyer sur la touche 'Echap' du clavier efface également les textes
16
Harsh Raj

Sur certains navigateurs, il prend également en charge les attributs "résultats" et "sauvegarde automatique", qui fournissent une fonctionnalité de "recherches récentes" automatique avec l'icône de la loupe.

Plus d'infos

7
Scott Wilson

En fait, soyez très prudent en supposant que cela ne fasse rien. Lorsque vous accédez aux entrées de style avec la recherche par type, elles ont certains attributs qui ne peuvent pas être modifiés. Essayez de changer la frontière sur l'un et vous le trouverez tout à fait impossible. Il existe plusieurs autres attributs CSS non autorisés, consultez this pour tous les détails.

De plus, comme mentionné par Jashwant, il y a l'attribut result, bien que cela ne fonctionne pas très bien à moins d'inclure également l'attribut autosave. Le menu déroulant ne fonctionnera pas dans la plupart des navigateurs, cependant, utilisez-le à vos risques et périls.

2
sage88

Point bonus: input type="search "A la capacité d'utiliser l'attribut onsearch (bien que j'ai remarqué que cela ne fonctionnait PAS dans le nouveau navigateur Edge de Microsofts), ce qui évite d'avoir à écrire une fonction personnalisée onkeypress=if(key=13) { function() } chose.

1
James Groves

using input type = "search" amène le clavier à entrer le texte de la clé indiquant "search", ce qui peut améliorer l'expérience de l'utilisateur. Cependant, vous devez ajuster le style si vous utilisez ce type.

1
qingyang yu

Il y a une différence de navigateur en action, lorsque vous tapez quelques mots puis saisissez ESC en entrée type="search" en chrome/safari, la zone de saisie sera effacée. mais en type="text" scénario, les mots ne seront pas effacés. Alors, soyez prudent en choisissant le type surtout lorsque vous l'utilisez pour la fonctionnalité de saisie semi-automatique ou liée à la recherche

1
yidea

Cela dépend du point de vue du programmeur, un programmeur peut facilement déterminer le but de l'entrée en regardant le type, et il est facile pour le style CSS et pour JavaScript ou JQuery de vérifier les règles dans les entrées.

0
Fil