我就是这么做的:
$('select').each(function () {
var selectedValue = $(this).find('option:selected').val();
if (selectedValue !== '0') {
$('option').each(function () {
if (!this.selected) {
$(this).attr('disabled', true);
}
});
}
});
第一个选项是"-选择一个选项-"它的值为0,这就是我做验证的原因。基本上我想做的是在一个下拉菜单中禁用所有选项有一个不同于第一个的选择值。所有的下拉菜单都是用jquery的select2初始化的,每个下拉菜单都有一个唯一的id。
我分享的代码不能正常工作,因为无论是否没有选择选项,我都会在每个下拉菜单中禁用选项。
有谁能帮我解决这个问题吗?
我还没有测试过,但是你应该替换这一行:
$('option').each(function () {
和这个:
$(this).find('option').each(function () {
同样,你应该使用change event来调用这个函数,这意味着当某个选项被选中时它会被触发,像这样:
$('select').on('change', function() {
问题是这样做:
$('select').each(function () {
$('option').each(function () {
你遍历了所有的select元素和它的所有选项,而不是遍历被点击的唯一的select元素