Javascript 启用/禁用输入
我正在尝试使用Javascript 启用/禁用输入,javascript,prototypejs,Javascript,Prototypejs,我正在尝试使用原型启用和禁用一组单选按钮,具体取决于选择的另一组单选按钮 例如。 第一组单选按钮,标签为“墙皮”,有4个选项 -没有 -红色左边 -右翼 -都是红色的 第二组单选按钮包含以下选项: -没有 -左 -对 -两者 如果用户从第一组中选择None,则在第二组中,必须禁用除None之外的所有单选按钮 如果用户从第一组中选择Left,则在第二组中,除None和Left外,所有单选按钮都必须禁用 如果用户从第一组中选择了Right,则在第二组中,除None和Right外,必须禁用所有单选按钮
原型启用和禁用一组单选按钮,具体取决于选择的另一组单选按钮
例如。
第一组单选按钮,标签为“墙皮”,有4个选项
-没有
-红色左边
-右翼
-都是红色的
第二组单选按钮包含以下选项:
-没有
-左
-对
-两者
如果用户从第一组中选择None
,则在第二组中,必须禁用除None
之外的所有单选按钮
如果用户从第一组中选择Left
,则在第二组中,除None
和Left
外,所有单选按钮都必须禁用
如果用户从第一组中选择了Right
,则在第二组中,除None
和Right
外,必须禁用所有单选按钮
如果用户从第一组中选择两个
,则在第二组中,除无
和两个
外,必须禁用所有单选按钮
我已经编写了以下脚本来实现这一点,但这似乎并不完美,它只禁用了第二组中的一个单选按钮
$('options-skin-dd').select('input[type="radio"]').each(function(element) {
element.observe('click', disableSkinInstall);
});
这里的options皮肤dd
是保存第一组选项的容器
function disableSkinInstall(event) {
var element = Event.element(event);
var rel = element.readAttribute('rel');
$('options-skin-installation-labor-dd').select('input[type="radio"]').each(function(element) {
element.enable();
});
if(rel.indexOf("none")!=-1) {
$('options-skin-installation-dd').select('input[type="radio"]').each(function(element) {
if(element.readAttribute('title')=="Right" || element.readAttribute('title')=="Both" || element.readAttribute('title')=="Left") {
element.disable();
}
});
}
if(rel.indexOf("-left")!=-1) {
$('options-skin-installation-dd').select('input[type="radio"]').each(function(element) {
if(element.readAttribute('title')=="Right" || element.readAttribute('title')=="Both") {
element.disable();
}
});
}
if(rel.indexOf("-right")!=-1) {
$('options-skin-installation-dd').select('input[type="radio"]').each(function(element) {
if(element.readAttribute('title')=="Left" || element.readAttribute('title')=="Both") {
element.disable();
}
});
}
if(rel.indexOf("-both")!=-1) {
$('options-skin-installation-dd').select('input[type="radio"]').each(function(element) {
if(element.readAttribute('title')=="Left" || element.readAttribute('title')=="Right") {
element.disable();
}
});
}
}
我也尝试过使用.select()
,但这似乎不太管用
请告诉我,这里出了什么问题。你真的应该使用if/else if/else。通过在这些元素上使用一些类并选择它们,您可以使无代码的复制粘贴变得愉快。您也可以使用标题属性选择器来执行此操作。@epascarello我厌倦了下面的选择器,但这也不起作用。$('options-skin-installation-dd')。选择('input[type=“radio”][title=“Left”]','input[type=“radio”][title=“Right”]'))
请在jsfiddle.netI上举例。我对原始的观察调用$$(“#options skin dd input[type=“radio”]”)进行了改进。调用(“观察”,“单击”,禁用skininstall)
但我也建议将类放在单选按钮组上,这样您就可以使用$$()
函数将它们作为一个组进行寻址