简体   繁体   English

选中复选框时禁用输入

[英]Disabling an input when a checkbox is checked

I need to disable a cmp when a checkbox is checked, I tried this: 选中复选框时,我需要禁用cmp,我尝试过这样:

 <script language="text/javascript"> var x = document.getElementById("SemPretencao").checked; function desativar() { if (x==true) { alert("Seu Babacaum"); document.getElementById("salario").disabled=true; } else { alert("Babaquara"); document.getElementById("salario").disabled=false; } } document.getElementById("SemPretencao").addEventListener("click", desativar();, false); </script> inputs: <a class="field_names">Pretenção Salarial: </a> <input type="number" class="number_inputs" name="salario" id="salario"> <br> <a class="field_names">Não Tenho Pretenção Salarial </a> <input type="checkbox" class="checkbox_input" name="SemPretencao" id="SemPretencao"> 

Sorry for my English, I'm Brazilian. 对不起我的英语,我是巴西人。

Your addEventListener is wrong. 您的addEventListener错误。 You're calling the function instead of passing it. 您在调用函数而不是传递它。 Your function can also be simplified a bit. 您的功能也可以简化一些。 Try this: 尝试这个:

function desativar() {
  document.getElementById("salario").disabled = document.getElementById("SemPretencao").checked;
}

document.getElementById("SemPretencao").addEventListener("click", desativar, false);

Working example 工作实例

I found some issues in your code. 我在您的代码中发现了一些问题。 The x definition should have been inside the function. x定义应该已经在函数内部。 The eventListener was messing, it should have listen for the change event. eventListener混乱了,它应该侦听change事件。 I put this listener inside the HTML element (subject to debate, but working). 我将这个侦听器放在HTML元素中(有争议,但可以正常工作)。

 function desativar() { var x = document.getElementById("SemPretencao").checked; if (x==true) { alert("Seu Babacaum"); document.getElementById("salario").disabled=true; } else { alert("Babaquara"); document.getElementById("salario").disabled=false; } } 
  <a class="field_names">Pretenção Salarial: </a> <input type="number" class="number_inputs" name="salario" id="salario"> <br> <a class="field_names">Não Tenho Pretenção Salarial </a> <input type="checkbox" class="checkbox_input" name="SemPretencao" id="SemPretencao" onchange="desativar()"> 

Just change your "click" event to change, remove the parentheses after desativar , and move the x variable inside the function : 只需更改您的“ click”事件即可进行更改,在desativar之后删除括号,然后将x变量移至函数内部:

function desativar() {
    var x = document.getElementById("SemPretencao").checked;
    if (x==true) {
        alert("Seu Babacaum");
        document.getElementById("salario").disabled=true;
    } else {
        alert("Babaquara");
        document.getElementById("salario").disabled=false;
    }

}

document.getElementById("SemPretencao")
 .addEventListener("change", desativar, false);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM