Ver Mensaje Individual
  #8 (permalink)  
Antiguo 25/09/2008, 08:31
fredericpena
 
Fecha de Ingreso: septiembre-2008
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ReadOnly para select

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.