エラーはありませんが、機能していません: ジムでスポーツの 4 つの順序を選択する必要があるため、4 つのドロップダウンを使用する必要があります。データベースからデータのリストを取得する必要があります。これは、選択したときに 30 の分野を含む配列 drom データベースです。最初のドロップダウンの最初のドロップダウンには、この値を含めてはいけません。また、3 番目のドロップダウンから値を選択する場合、このドロップダウンには、ドロップダウン 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 メソッドが機能しないことです。何か助けてください?