表单时隐藏元素(菜单选择选项为空)

时间:2016-09-01 08:37:32

标签: javascript jquery html symfony twig

我有一个菜单选择'''''由表单生成,我想隐藏在树枝中的一些东西,而用户没有从菜单选择中选择任何东西。 这是我的表格:

many-to-one

树枝:

class CollapsideColleFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('colles', EntityType::class, array(
            'class' => 'PACESColleBundle:Colle',
            'attr' => array( 'class' => 'browser-default colles' ),
            'choice_label' => 'nom',
            'label' => false,
            'group_by' => 'matiere',
            'required' => true,
            'placeholder' => 'Choisissez une colle' ));
}
} 

<fieldset style='display: inline; border: 2px solid deepskyblue;'>
<!-- Menu SELECT OF COLLES -->
<legend> Choix de la colle</legend> {{ form_widget(formColle.colles) }}

我对表单不太满意我尝试将ID添加到表单然后使用Javascript检查菜单选择是否为空但我不知道该怎么做

提前感谢您提供给我的任何帮助

2 个答案:

答案 0 :(得分:1)

您可以使用jQuery完成工作。

首先,您必须看到元素的生成ID。这很简单,只需在浏览器上右键单击它们,然后选择“检查”。这将显示页面的DOM树,其中突出显示与所选元素对应的节点。

此外,为您希望能够隐藏的所有项目提供一个通用的CSS类。

然后你只需要添加一个类似于:

的javascript代码
$(document).ready(function(){
  $('#id-of-the-select-element').change(function(){
    if($(this).val())
    {
      $('.class-for-all-the-hiddable-elements').show();
    }
    else
    {
      $('.class-for-all-the-hiddable-elements').hide();
    }
  });
  $('#id-of-the-select-element').change();
});

答案 1 :(得分:1)

您可以使用Jquery执行此操作:

<style type="text/css">
    .hidden {
        display: none;
    }
</style>

<fieldset style='display: inline; border: 2px solid deepskyblue;'>
   <!-- Menu SELECT OF COLLES -->
   <legend> Choix de la colle</legend> 
   {{ form_widget(formColle.colles) }}
</fieldset>

<div class="hidden">
    <!-- Note  -->
    <fieldset style='display: inline; border: 2px solid deepskyblue;'>
    <legend> Note </legend>
    </fieldset>

        <!-- Classement  -->
    <fieldset style='display: inline; border: 2px solid deepskyblue;'>
        <legend> Classement </legend>
    </fieldset><br><br>

    <!-- Moyenne  -->
    <fieldset style='display: inline; border: 2px solid deepskyblue;'>
        <legend> Moyenne </legend>
    </fieldset>

    <!-- Médiane  -->
    <fieldset style='display: inline; border: 2px solid deepskyblue;'>
        <legend> Médiane </legend>
    </fieldset>

    <!-- Major  -->
    <fieldset style='display: inline; border: 2px solid deepskyblue;'>
        <legend> Major </legend>
    </fieldset>

    <!-- Minor  -->
    <fieldset style='display: inline; border: 2px solid deepskyblue;'>
        <legend> Minor </legend>
    </fieldset> 
</div>

<script>
  jQuery(function($) {
     $('#idOfYourSelectInput').change(function(){
        $('.hidden').show();
     });
  });
</script>