【发布时间】:2014-04-09 07:08:10
【问题描述】:
我正在使用此代码。但是我遇到了一个问题,当我在第一个选择框中选择“一”,然后在第二个选择框中选择“二”,当我再次将第二个值选择为“三”时,但值“二”仍然被禁用:
HTML 代码
// one
<select>
<option>Select</option>
<option value="1" >one</option>
<option value="two">two</option>
<option>three</option>
</select>
//two
<select>
<option>Select</option>
<option value="1" >one</option>
<option value="two">two</option>
<option>three</option>
</select>
这是 JavaScript 代码:
$(document).ready(function(e) {
var $selects = $('select#players');
available = {};
$('option', $selects.eq(0)).each(function (i) {
var val = $.trim($(this).text());
available[val] = false;
});
$selects.change(function () {
var $this = $(this);
var selectedVal = $.trim($this.find('option:selected').text());
available[selectedVal] = true;
$selects.not(this).each(function () {
$('option', this).each(function () {
var optText = $.trim($(this).text()),
optCheck = available[optText];
if(optCheck) {
$(this).prop('disabled', true);
}
else {
$(this).prop('disabled', false);
}
});
});
}).change(); // Trigger once to add options at load of first
});
【问题讨论】:
-
请注意,如果您在页面上有复杂的依赖关系,请考虑使用类似 knockout.js 而不是 jQuery 来处理它们。
标签: javascript jquery html html-select