Ответ 1
Вы должны проверить атрибут checked
, а не метод.
Обновлен скрипт: http://jsfiddle.net/8YBu5/7/
$('#checky').click(function(){
if($(this).attr('checked') == false){
$('#postme').attr("disabled","disabled");
} else {
$('#postme').removeAttr('disabled');
}
});
ИЗМЕНИТЬ
Помните, что этот код необходимо обернуть внутри $(document).ready()
или положить в нижней части вашего HTML-кода, в противном случае ваш JS свяжет себя с элементами DOM, которые еще не загружены, и сбой.
Обернуть его в .ready()
<script type='text/javascript'>
$(document).ready(function(){
$('#checky').click(function(){
if($(this).attr('checked') == false){
$('#postme').attr("disabled","disabled");
} else {
$('#postme').removeAttr('disabled');
}
});
});
</script>
Этот код можно поместить в любом месте документа и будет запускаться только после того, как DOM будет готов, поэтому вам не придется беспокоиться о преждевременных срабатываниях.
Поместите его внизу документа
<!-- some HTML -->
<script type='text/javascript'>
$('#checky').click(function(){
if($(this).attr('checked') == false){
$('#postme').attr("disabled","disabled");
} else {
$('#postme').removeAttr('disabled');
}
});
</script>
</body>
</html>
Если вы поместите его внизу документа, вам не нужно его обертывать в .ready()
, потому что javascript не будет считан, пока все остальное не загрузится. В этом методе есть повышение производительности (если у вас много JS)
Вы можете использовать один из этих методов, чтобы убедиться, что JS связывает методы обработки событий с элементами DOM только после того, как они закончили загрузку.