2010-12-14 3 views
2

Si 'choisir de ne pas répondre' est cochée, je dois désactiver les autres cases à cocher, voici mon code et mon code HTML, toute aide pour expliquer pourquoi cela ne fonctionne pas?Désactiver les cases à cocher en fonction de l'état d'une case

Code

function toggleStatus() { 
if ($('#toggleElement').is(':checked')) { 
    $('#living :input').attr('disabled', true); 
} else { 
    $('#living :input').removeAttr('disabled'); 
} 

html

<p>With whom do you live? Choose all that apply<br/> 
    <input type="checkbox" name="living" value="alone" id="living"> 
    Live alone <br> 
    <input type="checkbox" name="living" value="husband" id="living"> 
    Husband <br> 
    <input type="checkbox" name="living" value="partner" id="living"> 
    Partner <br> 
    <input type="checkbox" name="living" value="children" id="living"> 
    Children <br> 
    <input type="checkbox" name="living" value="parents" id="living"> 
    Parents <br> 
    <input type="checkbox" name="living" value="other_relatives" id="living"> 
    Other relatives <br> 
    <input type="checkbox" name="living" value="religion" id="living"> 
    Religious order <br> 
    <input type="checkbox" name="living" value="no_answer" 
       id="toggleElement"> 
    Choose not to answer <br> 
</p> 
+0

6 éditions en 2 minutes. Qu'est-ce que ... – Marko

+0

Je ne l'ai pas fait CW .. est-ce que ça devient automatiquement si de nombreuses modifications se produisent à court terme? –

+0

Vous devez également désactiver les autres choix si "seul" est coché. –

Répondre

4

Je ne vois pas votre fonction appelée partout, vous pouvez rig vers le haut dans un gestionnaire document.ready cependant, et simplifier aussi , comme ceci:

$(function() { 
    $("#toggleElement").change(function() { 
    $('input[name=living]').not(this).attr('disabled', this.checked); 
    }); 
}); 

Notez également que votre sélecteur était incorrect, il devrait être juste basé sur le nom ... et cet ID devrait être omis, car il est dupliqué.

+0

c'était dans le $ (document) .ready() {:) désolé, je viens de laisser cette partie. – dman

+0

@dman - Vous avez omis la partie où il est branché? C'est la partie la plus importante ... –

+0

Eh bien, je tenais pour acquis que c'était passé. Pardon! – dman

1

Essayez ceci:

if ($('#toggleElement').is(':checked')) { 
    $('#living :input').attr('disabled', "disabled"); 
} else { 
    $('#living :input').attr('disabled', false); 
} 
+0

qui ne semble pas fonctionner ... – dman

+0

travailler, maintenant, merci @rodrigo – dman

Questions connexes