我有一個窗體上的多個實例下拉選擇,確切地說八個。如果我在第一個選擇下拉列表中選擇一個數字,我想從第二個選擇下拉列表中將選定數字隱藏到第八個。刪除一個下拉項目,如果它被選中
爲此目的,我只會顯示八個選擇下拉菜單中的兩個。
查看代碼 -
選擇下拉一個 -
<div class="col-xs-12 col-sm-3">
<div class="form-group">
<?php echo Form::label('test_id', 'Test', array('class' => 'col-xs-3 control-label')) ?>
<div class="col-xs-9">
<select name="test_id" id="test_id" class="form-control select2" data-placeholder="Select...">
<option value=""></option>
<?php foreach (ORM::factory('Test')->order_by('id')->find_all() as $row) : ?>
<option value="<?php echo $row->id ?>"
<?php if ($b->id == $row->id) echo 'selected="selected"' ?>>
<?php echo $row->id ?></option>
<?php endforeach ?>
</select>
</div>
</div>
選擇下拉兩
<div class="col-xs-12 col-sm-3">
<div class="form-group">
<?php echo Form::label('test_id', 'Test', array('class' => 'col-xs-3 control-label')) ?>
<div class="col-xs-9">
<select name="test_id" id="test_id" class="form-control select2" data-placeholder="Select...">
<option value=""></option>
<?php foreach (ORM::factory('Test')->order_by('id')->find_all() as $row) : ?>
<option value="<?php echo $row->id ?>"
<?php if ($b->id == $row->id) echo 'selected="selected"' ?>>
<?php echo $row->id ?></option>
<?php endforeach ?>
</select>
</div>
</div>
jQuery代碼 -
var $selects = $('select');
$('select').change(function() {
$('option:hidden', $selects).each(function() {
var self = this,
toShow = true;
$selects.not($(this).parent()).each(function() {
if (self.value == this.value) toShow = false;
})
if (toShow) $(this).show();
});
if (this.value != "") //to keep default option available
$selects.not(this).children('option[value=' + this.value + ']').hide();
});
這絲毫不能奏效。
任何幫助,將不勝感激。
乾杯
可以顯示的選擇,而不是PHP呈現的HTML。另外你發佈的兩個php代碼片段看起來是完全一樣的 - 如果這是正確的,ids應該是唯一的 – Pete 2014-10-17 14:00:36
$(document).ready()中的jQuery代碼是什麼? – 2014-10-17 14:04:08
是的,它是$(document).ready()Vlad – user1839477 2014-10-17 14:06:48