Comment mettre un caractère d'espace avant le texte de l'option dans un élément HTML select?

Dans une liste déroulante, je dois ajouter des espaces devant les options de la liste. Je suis en train

<select>
<option>  Sample</option>
</select>

Pour ajouter deux espaces mais il n'affiche aucun espace. Comment puis-je ajouter des espaces avant les textes d'options?

22
demandé sur Jeff Atwood 2008-08-25 12:02:43

14 réponses

N'est pas &#160 l'entité pour l'espace?

<select>
<option>&#160;option 1</option>
<option>    option 2</option>
</select>

Fonctionne pour moi...

Modifier:

Vient de vérifier cela, il y a peut y avoir des problèmes de compatibilité avec cela dans les anciens navigateurs, mais tout semble bien fonctionner pour moi ici. Juste pensé que je devrais vous laisser savoir que vous voudrez peut-être remplacer par &nbsp;

24
répondu Rob Cooper 2016-06-01 18:30:37

Je pense que vous voulez &nbsp; ou &#160;

, Donc une version fixe de votre exemple pourrait être...

<select>
  <option>&nbsp;&nbsp;Sample</option>
</select>

Ou

<select>
  <option>&#160;&#160;Sample</option>
</select>
16
répondu Matt Sheppard 2008-08-25 08:14:09

Utilisez \xA0 avec une chaîne. Cela fonctionne parfaitement tout en liant les données du modèle C# à une liste déroulante...

  SectionsList.ForEach(p => { p.Text = "\xA0\xA0Section: " + p.Text; });
11
répondu user1570636 2013-07-25 10:21:17

Comme Rob Cooper l'a souligné, il y a quelques problèmes de compatibilité avec les anciens navigateurs (IE6 affichera les lettres réelles "& nbsp;"

C'est comme ça que je le contourne ASP.Net (je N'ai pas VS ouvert donc je ne suis pas sûr de savoir à quels caractères cela se traduit réellement):

Server.HtmlDecode("&nbsp;") 
8
répondu John 2010-09-10 14:45:35

Vous pouvez également appuyer sur alt+espace (sur mac) pour un espace insécable. Je l'utilise pour un module Drupal car Drupal décode les entités html.

5
répondu Smolla 2010-10-27 12:29:26

J'ai essayé plusieurs choses mais la seule chose qui a fonctionné pour moi était d'utiliser javascript. notez simplement que j'utilise le code unicode pour l'espace plutôt que l'entité html, car js doenst sait quelque chose sur les entités

$("#project_product_parent_id option").each(function(i,option){
  $option = $(option);
  $option.text($option.text().replace(/─/g,'\u00A0\u00A0\u00A0'))
});
5
répondu dabobert 2014-07-20 05:26:00

Je suis presque certain que vous pouvez accomplir ceci avec le remplissage de CSS, aussi bien. Ensuite, vous ne serez pas marié aux caractères d'espace codés en dur dans toutes vos balises <option>.

4
répondu Brian Warshaw 2008-08-25 10:26:43

@Brian

Je suis presque certain que vous pouvez accomplir ceci avec le remplissage de CSS, aussi bien. Ensuite, vous ne serez pas marié aux caractères spatiaux codés en dur dans toutes vos balises.

Bonne pensée - mais malheureusement, cela ne fonctionne pas dans (le navigateur préféré de tout le monde...) IE7:- (

Voici du code qui fonctionnera dans Firefox (et je suppose Op/Saf).

<select>
    <option style="padding-left: 0px;">Blah</option>
        <option style="padding-left: 5px;">Blah</option>
            <option style="padding-left: 10px;">Blah</option>
    <option style="padding-left: 0px;">Blah</option>
        <option style="padding-left: 5px;">Blah</option>
</select>
4
répondu Ross 2008-08-25 11:37:15

Suffit d'utiliser char 255 (type Alt+2+5+5 sur votre clavier numérique) avec une police à espacement fixe comme Courier New.

2
répondu Alain Holloway 2016-06-01 18:29:51

Server.HtmlDecode("&nbsp;") est le seul qui a travaillé pour moi.

Sinon les chr sont imprimés sous forme de texte.

J'ai essayé d'ajouter le remplissage en tant Qu'attribut pour le listitem, mais cela ne l'a pas affecté.

1
répondu user630071 2011-02-23 14:28:03
&nbsp;

Tu peux essayer ça? Ou est-il le même?

1
répondu Gishu 2013-02-25 16:15:00

J'avais aussi le même problème et je devais résoudre ce problème dès que possible. Bien que j'ai beaucoup googlé, Je n'ai pas été en mesure de trouver une solution rapide.

Au lieu de cela, j'ai utilisé ma propre solution, bien que je ne sois pas sûr si c'est approprié, cela fonctionne dans mon cas et exactement ce que j'étais tenu de faire.

Donc, lorsque vous ajoutez un ListItem dans la liste déroulante et que vous voulez ajouter de l'espace, utilisez ce qui suit: -

Appuyez sur ALT et tapez 0160 sur votre pavé numérique, il devrait donc être quelque chose comme ALT+0160. Il va ajouter un espace.

ListItem("ALT+0160 ALT+0160 TEST", "TESTVAL")
0
répondu user3640138 2016-06-01 18:09:06

J'ai essayé plusieurs de ces exemples, mais la seule chose qui a fonctionné était d'utiliser javascript, un peu comme dabobert, mais pas jQuery, tout simplement vieux javascript vanille et Espaces:

for(var x = 0; x < dd.options.length; x++)
{
    item = dd.options[x];
    //if a line that needs indenting
    item.text = '     ' + item.text; //indent
}

C'est IE seulement. IE11 en fait. Ugh.

-1
répondu Busch4Al 2017-10-31 14:55:35

1.Articles retour à la liste

2.Boucle Foreach dans la liste

3..

foreach (var item in q)
{
    StringWriter myWriter = new StringWriter();

    myWriter.Lable = HttpUtility.HtmlDecode(item.Label.Replace(" ", "&nbsp;"));
}

Ce travail pour moi!!!

-1
répondu Jay 2017-12-13 11:22:32