【发布时间】:2014-10-17 13:54:20
【问题描述】:
我在一个表单上有多个下拉选择实例,确切地说是八个。如果我在第一个选择下拉列表中选择一个数字,我想将第二个选择下拉列表中的所选数字隐藏到第八个。
为此,我将只显示八个选择下拉菜单中的两个。
查看代码 -
选择下拉一个 -
<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.ini 呈现的 html。此外,您发布的两个 php sn-ps 看起来完全相同 - 如果这是正确的,则 id 应该是唯一的
-
$(document).ready() 中的 jQuery 代码吗?
-
是的,它是 $(document).ready() Vlad
-
它似乎在工作:jsfiddle.net/10nwqwck/1。我还尝试添加重复的 ID 以查看是否会破坏它,它是否有效。
-
等一下,你是用 select2 来做选择的吗?