codeigniter form_dropdown with onChange don'不起作用

codeigniter form_dropdown with onChange don't work

本文关键字:不起作用 don onChange form dropdown with codeigniter      更新时间:2023-09-26

无错误但不工作:我需要在健身房设置一个四顺序的运动选择,所以我必须使用四个下拉列表,我必须从数据库中检索数据列表,这是一个包含30个学科的数组drom数据库。当我在第一个下拉列表中选择第一个时,第二个下拉列表可能不包含这个值,而且当我从第三个下拉列表中选择一个值时,这个下拉列表必须不包含下拉列表1和下拉列表2中的值1和值2,关于下拉列表4,它必须只包含27

我的观点:

  <?php $sports = array(
                        'aucun choix'  => ' Aucun choix',
                        'aerobic'  => ' 01- Aerobic',
                        'musculation'    => ' 02- Musculation',
                        'judo'   => ' 03- Judo',
                        'taekwondo' => ' 04- Taekwando',                                              
                        'aikido'  => ' 05- Aikido',
                        'karaté'    => ' 06- Karaté',
                        'haltérophilie'   => ' 07- Haltérophilie',
                        'sport de salle' => ' 08- Sport de salle',                                              
                        'sport feminin'  => ' 09- Sport feminin',
                        'sport plein air'    => ' 10- Sport plein air',
                        'sport de pêche'   => ' 11- Sport de pêche',
                        'basketball' => ' 12- Basketball',
                        'hand-voley ball'  => ' 13- Hand-voley ball',
                        'football'   => ' 14- Football',
                        'pétanque' => ' 15- Pétanque',                                              
                        'natation'  => ' 16- Natation',
                        'jeux d''echec'    => ' 17- Jeux d''echec',
                        'golf'   => ' 18- Golf',
                        'cyclisme' => ' 19- Cyclisme',                                              
                        'tenis'  => ' 20- Tenis',
                        'equitation'    => ' 21- Equitation',
                        'chasse tir vole'   => ' 22- Chasse tir vole',
                     ); 
                   ?>
          <script>
          function callSave(select) {
              var parent = select.parentNode;    
              var usedValues = {};    
              for (var i = 0; i < parent.children.length; ++i) {
                  var s = parent.children[i];
                  if (s.nodeName.toLowerCase() != 'select') {
                      continue;
                  }        
                  if (s.value != '') {
                      usedValues[ s.value ] = s;
                  }
              }    
              for (var i = 0; i < parent.children.length; ++i) {
                 var s = parent.children[i];
                 if (s.nodeName.toLowerCase() != 'select') {
                      continue;
                 }        
                  for (var j = 0; j < s.children.length; ++j) {
                     var o = s.children[j];
                      if (o.nodeName.toLowerCase() != 'option') {
                          continue;
                      }            
                      var p = o.value == '' ? undefined : usedValues[o.value];            
                     if (p == undefined || p == s) {
                          o.style.display = '';
                      }          
                      else {
                          o.style.display = 'none';
                      }
                  }
              }
          }
          </script>
         <div <?php if(form_error('sport_ordre1')) { echo 'class="control-group error"'; } else {echo 'class="control-group"';} ?> >
            <label class="control-label">Sport ordre 1 :</label>
         <div class="controls">
               <?php echo form_dropdown('sport_ordre1', $sports , $this->input->post('sport_ordre1') ? $this->input->post('sport_ordre1') : $participant_sport->sport_ordre1 , 'onChange="callSave(this)"'); ?>
              <span class="help-inline"><?php echo form_error('sport_ordre1'); ?></span>
         </div>
      </div>
        <div <?php if(form_error('sport_ordre2')) { echo 'class="control-group error"'; } else {echo 'class="control-group"';} ?> >
                 <label class="control-label">Sport ordre 2 :</label>
                   <div class="controls">
                       <?php echo form_dropdown('sport_ordre2', $sports , $this->input->post('sport_ordre2') ? $this->input->post('sport_ordre2') : $participant_sport->sport_ordre2 ,'onChange="callSave(this)"'); ?>
                        <span class="help-inline"><?php echo form_error('sport_ordre2'); ?></span>
                      </div>
          </div>
           <div <?php if(form_error('sport_ordre3')) { echo 'class="control-group error"'; } else {echo 'class="control-group"';} ?> >
                 <label class="control-label">Sport ordre 3 :</label>
                      <div class="controls">
                           <?php echo form_dropdown('sport_ordre3', $sports , $this->input->post('sport_ordre3') ? $this->input->post('sport_ordre3') : $participant_sport->sport_ordre3 , 'onChange="callSave(this)"'); ?>
                          <span class="help-inline"><?php echo form_error('sport_ordre3'); ?></span>
                        </div>
                  </div>
             <div <?php if(form_error('sport_ordre4')) { echo 'class="control-group error"'; } else {echo 'class="control-group"';} ?> >
                                    <label class="control-label">Sport ordre 4 :</label>
                                    <div class="controls">
                                    <?php echo form_dropdown('sport_ordre4', $sports , $this->input->post('sport_ordre4') ? $this->input->post('sport_ordre4') : $participant_sport->sport_ordre4 , 'onChange="callSave(this)"'); ?>
                                    <span class="help-inline"><?php echo form_error('sport_ordre4'); ?></span>
                                </div>
                            </div>

问题是,当我在一个下拉列表中选择一个值时,它会出现在其他下拉列表中,所以onChange方法不适用于这种情况。请帮忙吗?

我认为,当您调用parentNode时,应该通过其id访问DOM。由于您没有通过id访问它,所以您只需将DOM元素传递给函数。

'onChange="callSave(this.id)"';

但你到底需要什么。您可以使用jquery。