Foros del Web » Programando para Internet » Javascript » Frameworks JS »

tengo porblemas con un onblur

Estas en el tema de tengo porblemas con un onblur en el foro de Frameworks JS en Foros del Web. hola a todos bueno esta es una funcion hecha con ajax la cual agrega una fila a una tabla. Código: function agregarFila(codigo) { if(buscarproducto(codigo)) { ...
  #1 (permalink)  
Antiguo 29/04/2008, 11:13
 
Fecha de Ingreso: abril-2003
Ubicación: Santiago
Mensajes: 212
Antigüedad: 21 años
Puntos: 0
tengo porblemas con un onblur

hola a todos bueno esta es una funcion hecha con ajax la cual agrega una fila a una tabla.
Código:
function agregarFila(codigo) {
	if(buscarproducto(codigo)) {
		alert("El porducto ya se encuentra en la lista");
	}
	else {
		agregarFilaAjax=nuevoAjax();
		agregarFilaAjax.open("POST", "../../ajax/ventas/producto.php", true);
		agregarFilaAjax.onreadystatechange = function (){
			if(agregarFilaAjax.readyState == 4) {
				xml=agregarFilaAjax.responseXML;
				tam=xml.getElementsByTagName('codigo').length;
				if(tam!=0) {
					tabla=opener.document.getElementById('dte_producto');
					arreglo=new Array();
					arreglo[0]=xml.getElementsByTagName('codigo').item(0).firstChild.data;
					arreglo[1]=xml.getElementsByTagName('producto').item(0).firstChild.data;
					arreglo[2]=xml.getElementsByTagName('unitario').item(0).firstChild.data;
					arreglo[3]="";
					arreglo[4]="";
					fila=creaFila(arreglo, opener.document, 'radio', 'productos[]');
					tabla.appendChild(fila);
					opener.document.getElementById("cant"+arreglo[0]).onblur=function(){calcularTotal(opener.document.getElementById("cant"+arreglo[0]))};
				}
			}
		}		
		agregarFilaAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		agregarFilaAjax.send("codigo="+codigo);
	}
}

function creaFila(arreglo, objeto, tipo, nombre) {
	fila=objeto.createElement('tr');
	for(i=0;i<arreglo.length; i++) {
		if(i==0) {
			columna=objeto.createElement('td');
			inpObjt=crearInput('input',nombre,objeto);
			inpObjt.setAttribute('type',tipo);
			inpObjt.setAttribute('value',arreglo[0]);
			//inpObjt.onchange=function(){mostrarcontenido(this)};
			columna.appendChild(inpObjt);
			fila.appendChild(columna);
		}
		else {
			if(i==2) {
				columna=objeto.createElement('td');
				inpObjt=crearInput('input',"cant"+arreglo[0],objeto);
				//inpObjt.onblur=function(){calcularTotal2("cant"+arreglo[0])};
				inpObjt.setAttribute('type','text');
				inpObjt.setAttribute('value','0');
				inpObjt.setAttribute('maxlength','5');
				inpObjt.setAttribute('size','5');
				inpObjt.setAttribute('id',"cant"+arreglo[0]);
				columna.appendChild(inpObjt);
				fila.appendChild(columna);	
			}
			else {
				if(i==3) {
					columna=objeto.createElement('td');
					inpObjt=crearInput('input',"unit"+arreglo[0],objeto);
					inpObjt.setAttribute('type','text');
					inpObjt.setAttribute('readOnly','readOnly');
					inpObjt.setAttribute('value',arreglo[2]);
					inpObjt.setAttribute('maxlength','10');
					inpObjt.setAttribute('size','7');
					inpObjt.setAttribute('id',"unit"+arreglo[0]);	
					columna.appendChild(inpObjt);
					fila.appendChild(columna);	
				
				}
				else {
					if(i==4) {
						columna=objeto.createElement('td');
						inpObjt=crearInput('input',"total"+arreglo[0],objeto);
						inpObjt.setAttribute('type','text');
						inpObjt.setAttribute('value','0');
						inpObjt.setAttribute('maxlength','10');
						inpObjt.setAttribute('size','7');
						inpObjt.setAttribute('id',"total"+arreglo[0]);
						columna.appendChild(inpObjt);
						fila.appendChild(columna);
					}
					else {
						columna=objeto.createElement('td');
						columna.setAttribute('align','center');
						columna.appendChild(objeto.createTextNode(arreglo[i]));
						fila.appendChild(columna);
					}	
				}
			
			}
			
		}
	}
	return fila;
}

function crearInput(tag,name, objeto){
    if (name && window.ActiveXObject){
      element = objeto.createElement('<'+tag+' name="'+name+'">');
    }
	else{
      element =objeto.createElement(tag);
      element.setAttribute('name',name);
    }
    return element;
}
bueno mi porblema es que esta funcion se ejecuta desde una ventana hija y carga dicha fila en la ventana padre.
Mi porblema es que cuando recotrro la ventana padre en busca de de un elemnto de la pagina que supuestamente se crea carga en la ventana padre via ajax no la encuentra.
Agradesco de antemano toda la ayuda
Atte
Goomba
  #2 (permalink)  
Antiguo 29/04/2008, 11:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: tengo porblemas con un onblur

Prueba reemplazar opener por window.opener.

Saludos.
  #3 (permalink)  
Antiguo 29/04/2008, 12:49
 
Fecha de Ingreso: abril-2003
Ubicación: Santiago
Mensajes: 212
Antigüedad: 21 años
Puntos: 0
Re: tengo porblemas con un onblur

funciona pero ahora si cierro la ventana hija la funcion deja de funcionar alguien sabe como evitar eso?
  #4 (permalink)  
Antiguo 30/04/2008, 09:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: tengo porblemas con un onblur

Es un problema de conexión de tus ventanas, ya que al cerrarla pierdes el enlace a tu ventana padre, debes de buscar otra forma para plantear tu problema.

Saludos.
  #5 (permalink)  
Antiguo 30/04/2008, 18:41
 
Fecha de Ingreso: abril-2003
Ubicación: Santiago
Mensajes: 212
Antigüedad: 21 años
Puntos: 0
Re: tengo porblemas con un onblur

Hola mira aca hay unas SS de lo qu quiero hacer y a la ves pedir ayuda como deberia ser a ver si me pueden aydar o aconsejar que seria lo mejor


esta s la pagina y en ella se ve la pagina de cotizaciones y la pagina buscadora de productoa a agregar.
Al hacer click en agregar se abre la ventana en blanco qwue me permite buscar el rpoducto a agregar a la lista, pàra ello debo hacer una busqueda simple y selecccionar el producto que deseo agregar a la lista.
bueno al apretar en cargar genera una fila por cada producto selecionado, verificando que el porducto no se encuentra en la lsita si no esta la agrega sino manda un mensaje.

al hacer click en cargar genera la sigyuiente fila via DOM, en la cual en el campo input text cantidad le necesito agregar un evento el cual me permita actualizar el valor total si se cambia el valor dentro de cantidad.


la fila esta compuesta por un radiobutton, una columna que de nombre producto, columna de cantidad, una columan de valor unitario y una columna total
las variables nunca se mesclan debido a que el radio button es un areglo de radio button con un valor del codigo del porducto, y los imput de cantidad, unitario y total llevan el nombre de cant+codigo para catidad, unit+codigo para el valor unitario y asi y pa valor total total+codigo.
bueno es asi como pensaba en ver mi porblema pero no se por que al agregar el evento onblur solo funcionaba pa la ultima fila ingresada a la lista y mientras la ventana hija estuviera abierta alguien me piede ayudar porfa ya estoy chato y con los pelos de punta.
agradesco de antemano toda la ayuda de antemano y espero no mosletarlos.
Atte.
Goomba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:22.