我使用的jQuery函数禁用了在一个页面上选择相同选择值的可能性。例如:如果我在第2页上有不同的选择,第一次选择的选择值为1,则在第二次选择时,应禁用值1。我找到了评论的jQuery函数,但我不知道它的运行方式。
var previous = -1;
// Setting a previously selected value
$("select").change(function () {
// When any select element is changed
if ($(this).val() > -1) {
// When value is > -1
// Get all selects but not the current one which triggered the change event
$("select").not(this)
.find("option[value=" + $(this).val() + "]").attr('disabled', 'disabled');
// set the current option value to disabled
// Get all selects but not the current one which triggered the change event
$("select").not(this)
.find("option[value=" + previous + "]").removeAttr('disabled');
// Remove the disabled property on previous value
} else {
// Get all selects but not the current one which triggered the change event
$("select").not(this)
.find("option[value=" + previous + "]").removeAttr('disabled');
// Remove the disabled property
}
}).focus(function () {
previous = $(this).val();
// store the current value of the select to previous
});
这是JSFiddle链接: http://jsfiddle.net/Z2yaG/4/
有人可以解释我是var之前的数组吗?函数如何存储var之前所有选择的值?
答案 0 :(得分:1)
当您专注于任何选择时,previous
会获得选择值。当你改变的时候
$(this).val()
获取更改后的值,previous
表示前一个值(更改前的值)。
所以,基本上你的功能是什么,只要你选择任何选项,就会在其他两个selects
中禁用该选项
$("select").not(this)
.find("option[value=" + $(this).val() + "]").attr('disabled', 'disabled');
此行表示选择除当前行之外的所有select
,disable
option
,其值为this.val()
然后它同样启用previous
选项,因为不再选择
$("select").not(this)
.find("option[value=" + previous + "]").removeAttr('disabled');
选择除selects
之外的所有this
,然后移除所有disable
所选值的options