我对Javascript很新。我想避免每个"行"的多重选择。我找到了一个示例here,但它删除了页面中所有选择的属性。我试图调整它以仅支持表格行但没有这样的运气。请有人帮忙!以下是代码段。
$('select').change(function() {
var ary = new Array();
$('select option:selected').each(function() {
if ($(this).val().length > 0) {
ary.push($(this).val());
}
});
$('select option').each(function() {
if ($.inArray($(this).val(), ary) > -1) {
$(this).attr('disabled', 'disabled');
} else {
$(this).removeAttr('disabled');
}
});
});
这是我的表结构
<tr>
<td class="col-md-6">
<select name="from[]" class="form-control single-select" id="from">
<?php foreach($arrStops as $a){?>
<option value="<?php echo implode($a) ?>"> <?php echo implode($a) ?></option>
<?php } ?>
</select>
</td>
<td class="col-md-6">
<select name="to[]" class="form-control single-select" id="to">
<?php foreach($arrStops as $a){ ?>
<option value="<?php echo implode($a) ?>"> <?php echo implode($a) ?></option>
<?php } ?>
</select>
</td>
答案 0 :(得分:1)
如果没有显示任何html,我将假设以下内容可以满足您的需求。
您希望通过首先使用closest()
遍历<tr>
,然后在<tr>
内查找仅存在于该<select>
内的$('select').change(function() {
// isolate row instance
var $row = $(this).closest('tr');
var ary = new Array();
// only look inside row
$row.find('select option:selected').each(function() {
if ($(this).val().length > 0) {
ary.push($(this).val());
}
});
$row.find('select option').not(':selected').each(function() {
if ($.inArray($(this).val(), ary) > -1) {
$(this).attr('disabled', 'disabled');
} else {
$(this).removeAttr('disabled');
}
});
});
元素来隔离该行中的实例使用find()
@echo off
:TEST
set /p TEST=TEST:
echo %TEST%
pause