Hola... de pronto esto les pueda servir para los que quieran bloquear un select mientras requieren de su valor... es muy sencillo...
Coloquen el siguiente codigo en un script en la cabecera de la página, recomiendo que tengan la libreria Prototype, ya que hace uso de esta...
Código:
// Funcion para simular la inactivacion de un control
doDisableDiv = function(dvName)
{
var nDiv = document.createElement('div');
nDiv.setAttribute('id', dvName + 'Disabled');
nDiv.style.display='block';
nDiv.style.position="absolute";
nDiv.style.cssFloat="left";
nDiv.style.width = $(dvName).offsetWidth +"px";
nDiv.style.height = $(dvName).offsetHeight +"px";
nDiv.style.top=findPosY($(dvName)) + "px";
nDiv.style.left=findPosX($(dvName)) + "px";
nDiv.className="inactivo";
var myBody = document.getElementsByTagName('body').item(0);
myBody.appendChild(nDiv);
}
// Funcion para simular la activacion de un control
doEnableDiv = function(dvName)
{
if(document.getElementById(dvName + 'Disabled'))
{
var myBody = document.getElementsByTagName('body').item(0);
myBody.removeChild(document.getElementById(dvName + 'Disabled'));
}
}
// Funcion para determinar la posicion Real Horizontal de un objeto
findPosX = function(obj)
{
var curleft = 0;
if(obj.offsetParent){
while(1)
{
curleft += obj.offsetLeft;
if(!obj.offsetParent)
break;
obj = obj.offsetParent;
}
}else if(obj.x)
curleft += obj.x;
return curleft;
}
// Funcion para determinar la posicion Real Vertical de un objeto
findPosY = function(obj)
{
var curtop = 0;
if(obj.offsetParent){
while(1)
{
curtop += obj.offsetTop;
if(!obj.offsetParent)
break;
obj = obj.offsetParent;
}
}else if(obj.y)
curtop += obj.y;
return curtop;
}
Despues, simplemente cuando quieran inactivar el control invocan
Código:
doDisableDiv('nombre_de_control');
Similar, cuando quieran activar de nuevo el control invocan
Código:
doEnableDiv('nombre_de_control');
Espero que les sirva esta solucion, cualquier pregunta con gusto la contesto por aqui.