1 回答
TA贡献1824条经验 获得超5个赞
让我试着帮助你。首先,如评论中所述,您必须onchange
从循环中删除处理程序,并且必须使其select
id
独一无二。(使用$i
变量)。然后在创建选择之后,您必须使用event-delegation api处理它们的更改。
关于更改处理程序的几句话。如果我正确理解了您的要求,您必须禁用所有非首选选项的所有“配偶”选项。所以处理程序正在检查选择是否是第一个,以及它是否prop('disabled')
基于第一个选择值进行设置。如果我错误地理解了您的要求,请随时纠正我。
$(document).on('change', '.select', function() {
const selects = $('.select');
const doesAnyoneIsSpouse = selects.filter(function(key) {
return $(selects[key]).val() === '1';
}).length > 0;
$('.select').not(this).find('option[value="1"]').prop('disabled', doesAnyoneIsSpouse);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select tabindex="" id="relationship_select" class="select" name="prgm_person[0][person_relationship_id]" style="width: 110px;">
<option value=""></option>
<option value='0'>Child</option>
<option value='1'>Spouse</option>
</select>
<select tabindex="" id="relationship_select" class="select" name="prgm_person[1][person_relationship_id]" style="width: 110px;">
<option value=""></option>
<option value='0'>Child</option>
<option value='1'>Spouse</option>
</select>
<select tabindex="" id="relationship_select" class="select" name="prgm_person[2][person_relationship_id]" style="width: 110px;">
<option value=""></option>
<option value='0'>Child</option>
<option value='1'>Spouse</option>
</select>
<select tabindex="" id="relationship_select" class="select" name="prgm_person[3][person_relationship_id]" style="width: 110px;">
<option value=""></option>
<option value='0'>Child</option>
<option value='1'>Spouse</option>
</select>
- 1 回答
- 0 关注
- 169 浏览
添加回答
举报