83 votes

Comment utiliser le troncage de texte ellipsis dans un champ de saisie html?

Ma page web comporte des champs de saisie auxquels j'ai appliqué le CSS suivant :

.ellip {
    white-space: nowrap;
    width: 200px;
    overflow: hidden;
    -o-text-overflow: ellipsis;
    -ms-text-overflow: ellipsis;
    text-overflow: ellipsis;
}

Mais cela ne semble pas avoir d'effet. Est-ce que je manque quelque chose d'évident ici ou est-il impossible d'avoir une ellipse dans un champ de saisie en utilisant seulement du CSS?

7 votes

Je viens de vérifier et text-overflow:ellipsis fonctionne parfaitement sur les éléments input (du moins dans Chrome)

3 votes

La réponse acceptée ne semble pas vraiment répondre à cette question.

54voto

Mo Bitar Points 2085

Définir text-overflow:ellipsis sur l'élément lui-même a fonctionné pour moi. Il tronque le texte et place les points de suspension lorsque l'élément n'est pas en focus.

4 votes

Aussi nécessaire le white-space:nowrap et overflow:hidden pour le faire fonctionner codeply.com/go/xyUMETlNgs

47voto

jennEDVT Points 599

Je sais que c'est une vieille question, mais j'avais le même problème et j'ai trouvé cet article de blog de Front End Tricks And Magic qui a fonctionné pour moi, donc j'ai pensé que je partagerais au cas où des gens seraient toujours curieux. L'idée principale du blog est que vous POUVEZ faire un ellipsis dans un input dans IE également, mais seulement si l'input a un attribut readonly.

De toute évidence, dans de nombreux scénarios, nous ne voulons pas que notre input ait un attribut readonly. Dans ce cas, vous pouvez utiliser JavaScript pour le basculer. Ce code est directement issu du blog, donc si vous trouvez cette réponse utile, vous pourriez envisager de consulter le blog et de laisser un commentaire d'appréciation à l'auteur.

// rendre l'input editable
$('.long-value-input').on('click', function() {
  $(this).prop('readonly', '');
  $(this).focus();
})

// rendre l'input readonly
$('.long-value-input').on('blur', function() {
  $(this).prop('readonly', 'readonly');
});

.long-value-input {
  width: 200px;
  height: 30px;
  padding: 0 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

7voto

Greg Points 8549

De mes tests, Chrome, Safari et Firefox le prennent désormais en charge.

Cependant, ils n'ont pas tout à fait les mêmes effets.

Sur Firefox, lorsqu'on quitte le champ de texte, des points de suspension sont ajoutés à droite du texte, mais seulement s'il y a du texte caché par le côté droit de la zone de texte.

Alors que sur Chrome, lorsqu'on quitte le champ de texte, le curseur semble se déplacer au début du texte et ajoute les points de suspension à la fin, peu importe où vous avez laissé la position de défilement du texte.

0 votes

Firefox peut afficher des caractères text-overflow des deux côtés du champ de saisie lors de la définition de deux valeurs, comme text-overflow: ellipsis ellipsis;. Chrome semble avoir des problèmes avec cela.

0 votes

Cela semble cesser de fonctionner lorsque la largeur est presque égale à la largeur du parent de l'entrée.

-10voto

Sven Bieder Points 3309

Un champ est un élément avec ses propres règles. Le champ de saisie est implémenté de telle manière que si le texte est plus long que le champ, le texte devient juste invisible.

La raison de cela est que si vous utilisez le champ dans un formulaire et qu'il serait possible d'utiliser une ellipse de débordement de texte, alors il ne transmettrait que le contenu tronqué, ce qui n'est pas l'effet voulu.

13 votes

a) firefox 16 rend un ellipse (à la mauvaise position), quand le champ de saisie n'a pas le focus b) la raison est totalement fausse, ce qui est affiché n'a rien à voir avec ce qui est dans le DOM (et donc transmis) c) avoir un marqueur d'ellipse lorsque ce n'est pas focalisé est (discutablement) meilleur d'un point de vue d'utilisabilité

0 votes

Chrome rend également des points de suspension lorsque la zone de texte n'est pas en focus. Si vous souhaitez modifier votre réponse concernant le "manque de faits", j'aimerais retirer le vote négatif que je vous ai donné!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X