使用Javascript阻止每行的多个选择

时间:2016-10-30 16:28:28

标签: javascript jquery html-table row

我对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>

1 个答案:

答案 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