Una opción es colocar todos los elementos a deshabilitar dentro de otro que facilite su referenciación. Ejemplo:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
var DR=function(f){
if(document.addEventListener){
var func=function(){f();document.removeEventListener('DOMContentLoaded',func,false);}
document.addEventListener('DOMContentLoaded',func,false);
}else{
function r(f){/in/.test(document.readyState)?setTimeout(function(){r(f);},9):f();};
r(f);
}
};
function addEvent(obj,fun,type){
if(obj.addEventListener){
obj.addEventListener(type,fun,false);
}else if(obj.attachEvent){
var f=function(){
fun.call(obj,window.event);
}
obj.attachEvent('on'+type,f);
obj[fun.toString()+type]=f;
}else{
obj['on'+type]=fun;
}
}
function t(id){return document.getElementById(id);}
DR(
function(){
ver();//ojo, acá this referencia a window
addEvent(t('pp'),ver,'click');//aquí, en cambio, this referencia al checkbox
}
);
function ver(){
var relacionados=t('camposrelacionados').getElementsByTagName('input'),l=relacionados.length,i=0;
for(;i<l;i++){
relacionados[i].disabled=!this.checked;
}
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<input name="pp" id="pp" type="checkbox" value="1" />
<div id="camposrelacionados">
<input name="uno" type="text" /><br />
<input name="dos" type="text" /><br />
<input name="tres" type="text" />
</div>
<input name="otrocampo" type="text" />
</form>
</body>
</html>