Foros del Web » Programando para Internet » Javascript »

For dentro de un select

Estas en el tema de For dentro de un select en el foro de Javascript en Foros del Web. Estoy utilizando esta funcion en un fichero javascript, para repetir campos de un formulario si pulsan un boton. Código: function addInput(divName){ var newdiv = document.createElement('div'); ...
  #1 (permalink)  
Antiguo 10/06/2015, 16:24
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 0
For dentro de un select

Estoy utilizando esta funcion en un fichero javascript, para repetir campos de un formulario si pulsan un boton.

Código:
function addInput(divName){
          var newdiv = document.createElement('div');
          newdiv.innerHTML = "Entry " + (counter + 1) + " <br><select  name='dia[]' id='dia' title='dia'  style='width:50px;'> <option value='0'>Día</option> <?php for( $i=1;$i<=31;$i++) {       ?> <option value='<?php echo $i; ?>'><?php echo $i; ?></option> <?php  }   ?> </select>";
          document.getElementById(divName).appendChild(newdiv);
          counter++;
    }
Al pulsar el boton se agrega el select pero no sale relleno del 1 al 31.
Supongo que sera porque no puedo hacer uso de la etiqueta php en javascript.
He probado a quitar las etiquetas php y sustituir el echo por document.write pero no funciona:

Código:
          newdiv.innerHTML = "Entry " + (counter + 1) + " <br><select  name='dia[]' id='dia' title='dia'  style='width:50px;'> <option value='0'>Día</option> for( i=1;i<=31;i++) {        <option value='document.write(i); '>document.write(i); </option>   }   </select>";
  #2 (permalink)  
Antiguo 11/06/2015, 08:01
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: For dentro de un select

prueba con esto

Cita:
<?php for( $i=1;$i<=31;$i++) { echo "<option value='".$i."'>".$i."</option>"; } ?>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 12/06/2015, 13:07
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: For dentro de un select

He probado a escapar las " porque ese codigo ya esta dentro de unas comillas dobles. dentro de newdiv.innerHTML = "Entry " + (counter + 1) + " ";


Pero sigue sin funcionar, ¿estaria bien asi?
Código:
<?php for( $i=1;$i<=31;$i++) { echo '<option value='\".$i.\"'>\".$i.\"</option>'; } ?>
  #4 (permalink)  
Antiguo 12/06/2015, 15:23
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: For dentro de un select

Si no me equivoco, estás tratando de ejecutar código php dentro de una función javascript, lo cual no es posible así como lo planteas.

Si para crear o repetir las opciones del select necesitas forzosamente consultar al servidor, deberás hacerlo con ajax.

Si las opciones ya están en pantalla, y sólo debes duplicarlas, es posible recorrer un select, leer sus opciones y crearlas dentro de otro select, pero sin usar php.


document.write funciona antes de que la página sea cargada, ya que una vez que la página está cargada, sólo puedes manipular sus elementos de forma independiente, generalmente haciendo referencia a su id.
  #5 (permalink)  
Antiguo 14/06/2015, 07:58
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: For dentro de un select

no se pueden hacer las cosas con prisas

prueba ahora
Cita:
<?php $opt =""; for( $i=1;$i<=31;$i++) { $opt.= "<option value='".$i."'>".$i."</option>"; } ?>
newdiv.innerHTML = "Entry " + (counter + 1) + " <br><select name='dia[]' id='dia' title='dia' style='width:50px;'> <option value='0'>Día</option><?php echo $opt ?> </select>";
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #6 (permalink)  
Antiguo 24/06/2015, 12:22
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: For dentro de un select

Cita:
Iniciado por IsaBelM Ver Mensaje
no se pueden hacer las cosas con prisas

prueba ahora
No se me habria ocurrido meterlo en una variable y luego el echo, buena idea.

El problema es que estoy probando a poner solo el for y ha dejado funcionar la funcion.
<?php $opt =""; for( $i=1;$i<=31;$i++) { $opt= "<option value='".$i."'>".$i."</option>"; } ?>

¿Es porque no se puede insertar codigo php en un fichero .js?
  #7 (permalink)  
Antiguo 24/06/2015, 13:31
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: For dentro de un select

Se puede hacer sin problema. De hecho mi codigo anterior lo demuestra. No ha dejado de funcionar, solo que $opt no lo estas asignando a ningun elemento
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 24/06/2015, 16:18
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: For dentro de un select

Lo he puesto tal cual me has dicho, quedaria algo asi:
Código:
var counter = 1;
var limit = 3;
function addInput(divName){
     if (counter == limit)  {
          alert("Has llegado al límite" + counter + " inputs");
     }
     else {
		  <?php $opt =""; for( $i=1;$i<=31;$i++) { $opt.= "<option value='".$i."'>".$i."</option>"; } ?>
          var newdiv = document.createElement('div');
		  newdiv.innerHTML = "Entry " + (counter + 1) + " <br><select name='dia[]' id='dia' title='dia' style='width:50px;'> <option value='0'>Día</option><?php echo $opt ?> </select>";
          document.getElementById(divName).appendChild(newdiv);
          counter++;
     }
}
pero ha dejado de funcionar el boton que agrega el desplegable, antes de modificar esto, si se agregaba pero vacio.

¿He colocado algo mal?
Muchas gracias por tu ayuda.
  #9 (permalink)  
Antiguo 29/06/2015, 07:19
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: For dentro de un select

estás seguro??

Cita:
<!DOCTYPE html>
<head>
<script type="text/javascript" >
var counter = 0;
var limit = 3;
function addInput(divName){
if (counter == limit) {
alert("Has llegado al límite" + counter + " inputs");
}
else {
<?php $opt =""; for( $i=1;$i<=31;$i++) { $opt.= "<option value='".$i."'>".$i."</option>"; } ?>
var newdiv = document.createElement('div');
newdiv.innerHTML = "Entry " + (counter + 1) + " <br><select name='dia[]' id='dia' title='dia' style='width:50px;'> <option value='0'>Día</option><?php echo $opt ?> </select>";
document.getElementById('sels').appendChild(newdiv );
counter++;
}
}
</script>
</head>
<body>

<input type="button" onclick="addInput()" />

<div id="sels"></div>
</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #10 (permalink)  
Antiguo 18/07/2015, 04:09
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: For dentro de un select

Al final he conseguido poner mi duda en otro tema nuevo. http://www.forosdelweb.com/f179/anad...0/#post4727654

Al poner mucho codigo me pedia que rellenase el captcha y el captcha se ve que no esta funcionando correctamente.

Última edición por crash_rpm; 19/07/2015 a las 04:53 Razón: Ya he conseguido abrir un tema nuevo

Etiquetas: formulario, funcion, html, input, php, select
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 13:35.