如何在 Javascript 中禁用和启用其他按钮,例如单选按钮效果
How can I disable and enable other buttons in Javascript something like a radio button effect?
我们正在使用以下脚本在我的页面上设置颜色主题。当用户单击按钮并在 HTML 上设置一个类时。当用户单击另一个按钮时,它会改为设置该类名。这工作正常。
<script type="text/javascript">
if (localStorage.buttonColor) {
document.getElementsByTagName('html')[0].className = localStorage.buttonColor
}
function getButtonColor(buttonName) {
localStorage.buttonColor = buttonName;
document.getElementsByTagName('html')[0].className = buttonName
}
</script>
如果按钮颜色有本地存储值,则设置类。但是,我们还需要它来禁用按钮。我们如何根据本地存储的值使其禁用按钮?
此外,如果用户单击一个按钮,那么我们希望禁用该按钮,并启用所有其他具有"主题"类的按钮。我们正在寻找一个只有javascript的解决方案。
这是 HTML:
<form class="ng-pristine ng-valid">
<button class="theme" name="darkBlue" onclick="getButtonColor(this.name)">Blue</button>
<button class="theme" name="black" onclick="getButtonColor(this.name)">Black</button>
</form>
这是一个解决方案,但这并不是所需要的全部,因为我们现在决定为按钮提供一个类名,以便更容易选择它们。此外,这仅适用于从本地存储获取,如果用户单击按钮并启用所有其他按钮,我们仍然需要禁用该按钮。
if (localStorage.buttonColor) {
document.getElementsByTagName('html')[0].className = localStorage.buttonColor
var buttons = document.body.getElementsByTagName('form')[0].getElementsByTagName('button')
for(var i =0; i < buttons.length; i++)
if(buttons[i].name == localStorage.buttonColor) button.disabled = true
}
<script type="text/javascript">
function muteButtons(buttonObj)
{
buttons = buttonObj.parentNode.getElementsByTagName('button');
for(i=0;i<buttons.length;i++){
buttons[i].disabled=true;
}
buttonObj.disabled=false;
}
function restoreButtons(linkObj)
{
buttons = linkObj.parentNode.getElementsByTagName('button');
for(i=0;i<buttons.length;i++){
buttons[i].disabled=false;
}
}
</script>
<div id="example">
<button id="b1" onclick="muteButtons(this)">Button 1</button><br />
<button id="b2" onclick="muteButtons(this)">Button 2</button><br />
<span id="restore" onclick="restoreButtons(this)">restore buttons</span>
</div>
禁用按钮的问题在于,一旦它们被禁用...他们是禁用的。 因此,来回切换成为一个问题。 因此,为了重新"打开"按钮,我添加了第二个功能,该功能将恢复所有按钮。
您可以执行某种 if 语句来确定是否要启用/禁用该按钮。
document.getElementById("id").setAttribute("disabled", "true")
如果您需要禁用/启用所有按钮,则可以执行"getElementByTagName"来查找要查找的元素并像以前一样遍历它们。
EDIt:根据上一篇文章
删除该禁用属性的正确方法是:
element.removeAttribute("disabled");
设置禁用属性可以通过以下任何一种方式完成(所有相同的结果(
.setAttribute("disabled", "true")
.setAttribute("disabled", "false")
.setAttribute("disabled", "disabled")
将 HTML 更改为此
<form class="ng-pristine ng-valid">
<button class="theme" name="darkBlue" onclick="getButtonColor(this)">Blue</button>
<button class="theme" name="black" onclick="getButtonColor(this)">Black</button>
</form>
JavaScript:
function getButtonColor(element) {
localStorage.buttonColor = element.name;
document.getElementsByTagName('html')[0].className = element.name;
// Enable other elements
var toenable = document.querySelectorAll(".theme");
for (var k in toenable){
toenable[k].removeAttribute("disabled");
}
// Disable current element
element.setAttribute("disabled", "disabled");
}
<script type="text/javascript">
if (localStorage.buttonColor) {
document.getElementsByTagName('html')[0].className = localStorage.buttonColor;
}
function getButtonColor(element) {
localStorage.buttonColor = element.name;
document.getElementsByTagName('html')[0].className = element.name;
var element_id = element.id;
if (element_id == "darkBlue") {
document.getElementById("darkBlue").disabled = true;
document.getElementById("black").disabled = false;
}
if (element_id == "black") {
document.getElementById("black").disabled = true;
document.getElementById("darkBlue").disabled = false;
}
}
相关文章:
- 多个单选按钮组相互干扰
- 是否可以禁用jquery中的单个单选按钮
- Javascript:无法获取变量中的单选按钮值
- 通过ajax到php文件获取单选按钮值
- 互斥单选按钮和相应的输入字段
- 用于选择MVC3中单选按钮值的JavaScript
- 如何获取单选按钮的多个实例的选定单选按钮值
- react testUtils模拟点击单选按钮而不触发onchange
- 当选择组中的单选按钮时,jQuery addClass
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 客户端单选按钮列表验证
- Javascript:图像与单选按钮的值不匹配
- 如何在Javascript中将单选按钮值保存到cookie中
- 单击时如何更改单选按钮的CSS
- 使用按钮和单选按钮提交表单,但始终使用相同的值
- 注入Javascript以选择具有指定值的所有单选按钮
- 复选框/单选按钮-添加所选项目的总价
- 如何使用单选按钮设置cookie值
- Html按钮点击事件未触发单选按钮
- onClick() 按钮 单选按钮值不会更改我们的 JS