Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 启用/禁用输入_Javascript_Prototypejs - Fatal编程技术网

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)
但我也建议将类放在单选按钮组上,这样您就可以使用
$$()
函数将它们作为一个组进行寻址