如何添加一个css类来选择选项?

时间:2014-09-09 10:02:16

标签: symfony symfony-forms symfony-2.5

我正在尝试将一些 CSS类添加到我选择的特定选项中。

使用 attr 将其添加到选择中是没有问题的:

'attr'=>array('style'=>'width:300px', 'class'=>'class'),

但我想将这个类添加到选项本身:

<select name="select">
   <option class="x" value="1">red</option>
   <option value="2">blue</option>
   <option class="y" value="3">green</option>
</select> 

我还没找到任何办法。我已经调查了 ChoiceType ChoiceList 实现。

我最喜欢的方法是在服务器端添加它们。

感谢任何提示。

3 个答案:

答案 0 :(得分:3)

最后我要等待的解决方案将在2.7(source)中实现。

  

choice_attr

     

返回选项的其他HTML属性。可以是数组,a   可调用的(例如&#34; choice_label&#34;)或属性路径。如果一个阵列,   &#34;选择的关键&#34;数组必须用作键。

// array
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'flip_choices' => true,
    'choice_attr' => array(
        'Maybe' => array('class' => 'greyed-out'),
    ),
));

答案 1 :(得分:1)

我不确定您在寻找什么,但正如我通过 Florian Peschka's 评论您想要将custom class添加到特定(特定)选项,那么这里是什么我试过..

<强> JQuery的

$('select>option:eq(1)').addClass("custom_class");

此处eq()方法:将匹配元素集减少到指定索引处的元素集。就像Array一样,它的索引从0开始,所以如果您想选择第二个选项,请写eq(1)

在上面的代码中,我已将custom_class添加到第二个选项..

<强> HTML:

<select name="select">
   <option class="x" value="1">red</option>
   <option value="2">blue</option>  # suppose you wanted to add custom class in this option
   <option class="y" value="3">green</option>
</select> 

现在看起来像

<option class="custom_class" value="2">blue</option>

Working Demo

要检入演示版,您可以右键单击下拉列表并选择Inspect element with firebugenter image description here

如果这不符合您的要求,请使用您的预期输出...说明

更新您的问题

答案 2 :(得分:0)

您必须覆盖表单中特定小部件的布局。请参阅示例How can I add css classes to specific symfony2 form choices?