2016-08-07 13 views
-1

geprüft Ich brauche eine cmp zu deaktivieren, wenn ein Kontrollkästchen aktiviert ist, ich das versucht:einen Eingang deaktivieren, wenn eine Checkbox

<script language="text/javascript"> 
 

 
var x = document.getElementById("SemPretencao").checked; 
 

 
function desativar() { 
 

 
\t if (x==true) { 
 
\t \t alert("Seu Babacaum"); 
 
\t \t document.getElementById("salario").disabled=true; 
 
\t } else { 
 
\t \t alert("Babaquara"); 
 
\t \t document.getElementById("salario").disabled=false; 
 
\t } 
 

 
} 
 

 
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> 
 
\t <a class="field_names">Não Tenho Pretenção Salarial </a> <input type="checkbox" class="checkbox_input" name="SemPretencao" id="SemPretencao">

Sorry für mein Englisch, ich bin Brasilianer.

+0

Sie haben werden um zu prüfen, ob das Kontrollkästchen * innerhalb * der Funktion aktiviert ist, ansonsten ändert sich der Wert nie. – adeneo

+0

Und das Skript muss nach den Elementen im DOM kommen; oder Sie benötigen einen DOM-fähigen Handler. – adeneo

+0

Auch 'desativar() ;,' ist ein Syntaxfehler. Es sollte "desativar" sein, – undefined

Antwort

2

Ihre addEventListener ist falsch. Sie rufen die Funktion auf, anstatt sie zu übergeben. Ihre Funktion kann auch etwas vereinfacht werden. Versuchen Sie folgendes:

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

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

Working example

+0

Da "this" auf das geänderte Element verweist, kann der 'document.getElementById (" SemPretencao "). Checked" -Teil durch 'this.checked;' ersetzt werden – undefined

0

Ich habe einige Probleme in Ihrem Code gefunden. Die x-Definition sollte innerhalb der Funktion gewesen sein. Der EventListener war unordentlich, er sollte auf das Change Event warten. Ich habe diesen Listener in das HTML-Element eingefügt (Gegenstand der Debatte, aber funktioniert).

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

 
}
<a class="field_names">Pretenção Salarial: </a> <input type="number" class="number_inputs" name="salario" id="salario"> <br> 
 
\t <a class="field_names">Não Tenho Pretenção Salarial </a> <input type="checkbox" class="checkbox_input" name="SemPretencao" id="SemPretencao" onchange="desativar()">

0

einfach ändern Sie Ihre "Klick" -Ereignis zu ändern, entfernen Sie die Klammern nach desativar, und bewegen Sie die x Variable innerhalb der Funktion:

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); 
Verwandte Themen