我的页面上有3个广播组。当用户在第一个无线电组中选择一个值时,如果它是特定值,则其他两个无线电组中的选择将重置为默认值,并且将禁用它们以防止更改它们。
问题是内置顶点Disable
操作使用disable
javascript属性,因此从会话中删除了无线电组的值。它需要使用与readonly
等效的javascript,据我所知,它目前不存在于顶点中。
如何解决此问题,以基于另一个无线电组中的选择来启用/禁用无线电组,同时仍然能够从代码中访问选定的值?
答案 0 :(得分:1)
部分问题是,按照规范,只读不适用于单选按钮。这是一个适合您的解决方案,但请确保在多个浏览器中进行测试...
将此函数添加到页面的“函数和全局变量声明”属性中:
function preventRadioSelection(e) {
e.preventDefault();
$(this).blur();
}
将此CSS添加到页面的Inline属性中
.sudo-disabled+label {
opacity: .5;
cursor: default;
pointer-events: none;
}
当您需要禁用某个项目时,请使用“执行JavaScript”操作和以下代码:
$(this.affectedElements).find('input').on('click', preventRadioSelection).addClass('sudo-disabled');
然后将“受影响的元素”设置为要禁用的项目。
当您需要启用一项时,请使用“执行JavaScript”操作和以下代码:
$(this.affectedElements).find('input').off('click', preventRadioSelection).removeClass('sudo-disabled');
然后将“受影响的元素”设置为要启用的项目。
请记住,所有这些都是在客户端进行的,可以由知道他们在做什么的人来解决。您需要通过服务器端验证来实施业务规则。