// 获取参数面板中的 label 控件
var labelWidget = _g().parameterEl.getWidgetByName("lbtime");
var labelValue = labelWidget.getValue();
// 将值转换为数组(例如 ["A", "B"])
var reservedTimeSlots = labelValue ? labelValue.split(',') : [];
console.log("已禁用的选项值:", reservedTimeSlots);
// 获取横向扩展的单选按钮组实例数组
var radioWidgets = _g().getWidgetsByName("radioGroup");
var radioInstances = radioWidgets.buttonArray; // 关键:从 buttonArray 获取实例
// 遍历每个实例
for (var i = 0; i < radioInstances.length; i++) {
var radioInstance = radioInstances[i];
// 获取当前实例的选项值和 DOM 元素
var optionValue = radioInstance.options.fieldValue; // 选项值(例如 "A")
var $btn = radioInstance.$btn; // 获取按钮的 DOM 元素(关键!)
var $input = $btn.find('input[type="radio"]'); // 获取 input 元素
// 检查是否需要禁用
if (reservedTimeSlots.indexOf(optionValue) > -1) {
// 禁用当前选项(直接操作 DOM)
$input.prop('disabled', true); // 禁用 input
$btn.css('opacity', '0.5'); // 置灰样式
$btn.css('pointer-events', 'none'); // 禁用鼠标事件
$btn.attr('title', '已禁用'); // 添加提示
// 添加“已预约”文本
if (!$btn.find('.reserved-text').length) {
$btn.append('<span class="reserved-text" style="color: red; margin-left: 5px;">已预约</span>');
}
console.log("已禁用选项:", optionValue);
} else {
$input.prop('disabled', false);
$btn.css('opacity', '');
$btn.css('pointer-events', 'auto'); // 恢复鼠标事件
$btn.attr('title', '');
// 移除“已预约”文本
$btn.find('.reserved-text').remove();
}
}
// 监听参数面板的值变化
labelWidget.on('valueChange', function() {
var labelValue = this.getValue();
var reservedTimeSlots = labelValue ? labelValue.split(',') : [];
for (var i = 0; i < radioInstances.length; i++) {
var radioInstance = radioInstances[i];
var optionValue = radioInstance.options.fieldValue;
var $btn = radioInstance.$btn;
var $input = $btn.find('input[type="radio"]');
if (reservedTimeSlots.indexOf(optionValue) > -1) {
$input.prop('disabled', true);
$btn.css('opacity', '0.5');
$btn.css('pointer-events', 'none');
$btn.attr('title', '已禁用');
// 添加“已预约”文本
if (!$btn.find('.reserved-text').length) {
$btn.append('<span class="reserved-text" style="color: red; margin-left: 5px;">已预约</span>');
}
} else {
$input.prop('disabled', false);
$btn.css('opacity', '');
$btn.css('pointer-events', 'auto');
$btn.attr('title', '');
// 移除“已预约”文本
$btn.find('.reserved-text').remove();
}
}
});