没有错误但没有工作: 我需要在健身房设置一个四阶运动选项,所以我必须使用四个下拉菜单,我从数据库中检索数据列表,它是一个数据drom数据库,当我在第一个选择fisrt时包含30个学科下拉seconde下拉不包含这个值,而且当我从第3个下拉列表中选择一个值时,这个下拉列表不会包含来自dropdown1和dropdown2的value1和value2,同样关于下拉列表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方法对于这种情况不起作用。有什么帮助吗?
答案 0 :(得分:0)
好吧,我认为当你调用.parentNode时,你应该通过它的id访问DOM。 由于您没有通过id访问它,因此您只需将DOM元素传递给函数即可。
'onChange="callSave(this.id)"';
但实际上你需要什么。你可以使用jquery。