Javascript 禁用材质设计Lite切换开关

Javascript 禁用材质设计Lite切换开关,javascript,material-design-lite,Javascript,Material Design Lite,我试图用JavaScript在页面上创建一些元素,并用新的。在我尝试在创建元素后以编程方式禁用元素之前,这一切都是有效的 我有几个切换开关(由JavaScript创建)。当一个开关打开时,我希望其他开关被禁用 如果我使用: toggle2.disabled = true; 它工作得很好,而且是禁用的,但只要我像这样尝试: setInterval(function(){ if (toggle1.checked == true) { toggle2.disabled = true; }

我试图用JavaScript在页面上创建一些元素,并用新的。在我尝试在创建元素后以编程方式禁用元素之前,这一切都是有效的

我有几个切换开关(由JavaScript创建)。当一个开关打开时,我希望其他开关被禁用

如果我使用:

toggle2.disabled = true;
它工作得很好,而且是禁用的,但只要我像这样尝试:

setInterval(function(){ 

if (toggle1.checked == true) {
    toggle2.disabled = true;
} else {
    toggle2.disabled = false;
}

}, 1000);
toggle2在视觉上仍然处于活动状态,涟漪效果可以工作,但不会滑动到打开状态,因此它在背景中被禁用,只是在视觉上没有

下面是一个示例(使用HTML元素,但在我的JS创建的元素中也会出现这种情况)

还有,这里有一个例子。其中,通过
toggle3禁用第三个down。disabled=true和第四个被IF语句根据第二个down的状态禁用

我不知道我是否做错了什么,或者这是MDL本身的一个bug


谢谢

只需为您添加一个
禁用的
HTML属性

你这样做是错误的。对象没有禁用的属性。您应该通过JQuery进行如下设置:

$('input#toggle2').attr('disabled','disabled')

我已经更新了


您不需要使用
SetInterval
。只需订阅切换1的
change
事件,然后调用
MaterialCheckbox.disable()
。像这样:

document.querySelector(“#我的复选框”).MaterialCheckbox.disable()


Disable是复选框组件(作为一个小部件实现)提供的一种方法,因此创建的所有额外元素的内部需要得到正确处理。

刚刚尝试了这个方法,它创建了相同的效果。已禁用,但在视觉上不可用,涟漪仍能工作,不会滑动到打开状态。另外,
toggle2.disabled=true不在if语句中,那么它工作得很好:@SS113奇怪,但在您的JSFIDLE中它对我不起作用。对,这就是为什么我不明白为什么在使用
toggle2.disabled=true时它看起来是灰色且不可点击的本身,但任何其他方式(您或我的)都会产生视觉上的活动切换,具有连锁反应,但无法滑动。谢谢你迄今为止的帮助!感谢Garbee的帮助,尽管我得到了
uncaughttypeerror:cannotreadproperty'disable'of undefined
。看,哎呀,我们搞错了。我们将在下一个补丁版本中修复此问题。在1.0中,我们没有将复选框作为小部件公开。非常抱歉,1.0.1标签的补丁应该在今天主控,有望在周五完成。哦,@SS113再次提醒,你的目标不是输入本身,而是定义js触发器的元素,在本例中是标签。这是一个更新的提琴,它将在补丁登陆后正常工作。感谢您的帮助和补丁的更新!