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

onchange en select creado dinamicamente

Estas en el tema de onchange en select creado dinamicamente en el foro de Frameworks JS en Foros del Web. Buenas... Tengo un problemilla con el que estoy días ya... busco información por todo pero ninguna de las soluciones que he visto me ha ayudado ...
  #1 (permalink)  
Antiguo 24/06/2008, 04:41
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
onchange en select creado dinamicamente

Buenas...

Tengo un problemilla con el que estoy días ya... busco información por todo pero ninguna de las soluciones que he visto me ha ayudado y ya no se me ocurre que más probar.
Estoy generando filas con campos dinamicamente, un campo es un select y los demás son campos de texto normales.. vale.. hasta ahi me he apañado y me va bien, mi problema es que quiero ir más alla haciendo que cuando cambie el select realice una consulta a la bdd y enseñe un valor en otro de esos campos que esta generando dinamicamente... bueno, pues no tengo manera de conseguir identificar el campo ese que estoy generando para cargarle ahora cualquier cosa, un simple hola, da igual el que... He probado creo que de todo, pensaba que podía ser porque cuando hago el onchange del select aun no se ha creado ese campo y he intentado cambiarlo de posición, pornerlo antes del select pero tampoco me resultó, no sé.. igual es una tonteria pero me trae loca...
Ahi os paso el codigo del script, a ver si alguien me sabe dar alguna idea..

Muchas gracias de antemano!

Código:
<script type="text/javascript">
var n=0; 
function add() { 
  pepe = document.getElementById('tabla'); 
  n++; 
  fila = document.createElement('tr'); 
   
  titulo=new Array('concepto','descripcion',  'cantidad', 'precio', 'dto');
   
  for (i=0;i<5;i++) { 
  
	  celda = document.createElement('td'); 
	  fila.appendChild(celda); 
	  
	  switch (i) {
		case 0:
		   code=document.createElement("SELECT");
		   code.setAttribute("size","1");
		   code.setAttribute("name",titulo[i]+"[]");
		   <? while($row_conceptos=mysql_fetch_array($sql_conceptos)) { 
				print "optioncode=document.createElement('option');";
				print "optioncode.innerHTML='".$row_conceptos['nombre']."';";
				print "optioncode.value='".$row_conceptos['id']."';";
				print "code.appendChild(optioncode);";
		   } ?>
  		   code.onchange = function() {
		   }		   
		   celda.appendChild(code);
		  break;
	  
	  	case 1:
	  	  	code=document.createElement('input'); 
	  		code.type='text'; 
	  		code.name=titulo[i]+"[]";
	  		code.size='15'; 
	  		celda.appendChild(code); 
	  		pepe.appendChild(fila); 
			break;
		
		case 2:
	  	  	code=document.createElement('input'); 
	  		code.type='text'; 
	  		code.name=titulo[i]+"[]";
	  		code.size='2'; 
	  		celda.appendChild(code); 
	  		pepe.appendChild(fila); 
			break; 
		
		case 3:
	  	  	code=document.createElement('input'); 
	  		code.type='text'; 
	  		code.name=titulo[i]+"[]";
	  		code.size='2'; 
	  		celda.appendChild(code); 
	  		pepe.appendChild(fila); 
			break;
			
		case 4:
		  	code=document.createElement('input'); 
	  		code.type='text'; 
	  		code.name=titulo[i]+"[]";
	  		code.size='2'; 
			celda.appendChild(code); 
	  		pepe.appendChild(fila); 
			break;
		}
	}
} 
</script>
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #2 (permalink)  
Antiguo 24/06/2008, 10:23
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: onchange en select creado dinamicamente

Hola:

No puedes mezclar javascript con php sin recargar la página o sin usar ayax (necesitarías un fichero adicional)... Si te interesa la opción ajax, danos un aviso para mover el tema a ese foro.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 24/06/2008, 11:23
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Respuesta: onchange en select creado dinamicamente

Me interesa cualquier opción que me lo solucione, jajaja.
Pero... realmente lo que quiero es ponerle un hola a ese cuadro de texto "dto"... y no consigo acceder a esa casilla, simplemente quiero poner un hola luego ya sacaré de la consulta el dato y lo pasaré... No sé, ya estoy hecha un lio!!!
Si no hay forma de solucionarlo asi y tengo q usar ajax creo que toy perdida porque se cero patatero... Bueno, ya me direis cosas... Graciassssss
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #4 (permalink)  
Antiguo 25/06/2008, 03:55
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Respuesta: onchange en select creado dinamicamente

Acabo de sacarlo.. o más o menos! XD al final cambie la forma de generar el input (lo hice con setAttribute) y en vez de usar el document.formulario.. bla bla usé el getElementById y funcionó... no sé, voy a ver si sigo y os lo muestro terminado por si a alguien le hace falta.
Gracias, un saludooooooo
__________________
Ibisof | Saludos desde Eivissa !!! :p

Última edición por Enea; 25/06/2008 a las 04:02
  #5 (permalink)  
Antiguo 25/06/2008, 10:12
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Respuesta: onchange en select creado dinamicamente

Ahora entiendo lo que me decias caricatos... que vale, q ya puedo mandarle un valor al campo que me daba problemas y demás pero me encuentro q no puedo interactuar solicitandole datos a la bdd dependiendo de ese select... Supongo que si necesitaré ajax, pero no sé nada... moved el hilo alli a ver si alguien puede ayudarme a solucionarlo sin tener que aprenderme el lenguaje proque es algo muy puntual que necesito y estoy casi sin tiempo..
Vuelvo a adjuntar el codigo tal como lo tengo ahora:

Código:
<script type="text/javascript">
var n=0; 
function add() { 
  pepe = document.getElementById('tabla'); 
  n++; 
  fila = document.createElement('tr'); 
   
  titulo=new Array('concepto','descripcion', 'cantidad', 'precio', 'dto');
   
  for (i=0;i<5;i++) { 
  
	  celda = document.createElement('td'); 
	  fila.appendChild(celda); 
	  
	  switch (i) {
		case 0:
		   code=document.createElement("SELECT");
		   code.setAttribute("size","1");
		   code.setAttribute("name",titulo[i]+"[]");
   		   code.setAttribute("id",n);
		   <? while($row_conceptos=mysql_fetch_array($sql_conceptos)) { 
				print "optioncode=document.createElement('option');";
				print "optioncode.innerHTML='".$row_conceptos['nombre']."';";
				print "optioncode.value='".$row_conceptos['id']."';";
				print "code.appendChild(optioncode);";
		   } ?>
  		   code.onchange = function() {
		   <? 
			$sql_dto=mysql_query("SELECT dto from rel_proveedor_linea where id_proveedor='".$row_proveedores['id']."' and id_linea_albaran='" ?>document.write(this.value);<? "'",$conexion);
		    $row_dto=mysql_fetch_array($sql_dto);?>
		   <!-- ***************************************** <? print $row_dto[dto]; ?> -->
		   //document.getElementById("dto"+this.id).value="<?= $row_dto ?>";
		   }		   
		   
		   celda.appendChild(code);
		  break;
	  
	  	case 1:
	  	  	var code1 = document.createElement("INPUT"); 
			code1.setAttribute("type","text"); 
			code1.setAttribute("size","10"); 
			code1.setAttribute("name",titulo[i]+"[]"); 
			code1.setAttribute("id",titulo[i]+"[]");  
			celda.appendChild(code1); 
	  		pepe.appendChild(fila); 
			break;
		
		case 2:
	  	  	var code2 = document.createElement("INPUT"); 
			code2.setAttribute("type","text"); 
			code2.setAttribute("size","2"); 
			code2.setAttribute("name",titulo[i]+"[]"); 
			code2.setAttribute("id",titulo[i]+"[]");  
			celda.appendChild(code2); 
	  		pepe.appendChild(fila); 
			break;
		
		case 3:
	  	  	var code3 = document.createElement("INPUT"); 
			code3.setAttribute("type","text"); 
			code3.setAttribute("size","2"); 
			code3.setAttribute("name",titulo[i]+"[]"); 
			code3.setAttribute("id",titulo[i]+"[]");  
			celda.appendChild(code3); 
	  		pepe.appendChild(fila); 
			break;
			
		case 4:  		
			var code4 = document.createElement("INPUT"); 
			code4.setAttribute("type","text"); 
			code4.setAttribute("size","2"); 
			code4.setAttribute("name",titulo[i]+n); 
			code4.setAttribute("id",titulo[i]+n); 
			celda.appendChild(code4); 
	  		pepe.appendChild(fila); 
			break;
		}
	}
} 
</script>
__________________
Ibisof | Saludos desde Eivissa !!! :p
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 21:10.