Foros del Web » Programando para Internet » Javascript »

añadir mediante función selectores

Estas en el tema de añadir mediante función selectores en el foro de Javascript en Foros del Web. Amigos, tengo un problema con una función javascript que no parece funcionarme. El hecho es que otras funciones similares sí que parecen funcionar. Se trata ...
  #1 (permalink)  
Antiguo 16/10/2011, 10:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
añadir mediante función selectores

Amigos,
tengo un problema con una función javascript que no parece funcionarme. El hecho es que otras funciones similares sí que parecen funcionar. Se trata de que al pulsar el botón + se añada otros dos selectores de creador y orden. Ahora al pulsar el botón no ocurre nada. He reducido el código al máximo usando array en lugar de una carga desde la base de datos. No os preocupéis por los index undefined que aparecerán, pues también eso lo tengo resuelto. Mi idea es poder añadir más de un selector de manera dinámica, rellenar los datos y luego que el echo muestre los mismos.
Código:
<html>
<head>
<title></title>
<script type="text/javascript">
var creadores = 0;
function anadircre(vcre){
if (creadores==0){
creadores = vcre+1;
}
document.getElementById("dvcreador").innerHTML = "<table id='tabcreador'>" +
document.getElementById("tabcreador").innerHTML +
"<tr>" +
"<td>" +
"<select name='cre" + creadores + "'>" +
"<option value='0'>Selecciona un valor</option>" +
<?php
foreach($creadores as $key => $creador){
echo "\"<option value='{$key}'>".addslashes($creador)."</option>\" + ";
}
?>
"</select>" +
"</td>" +
"<td>" +
"<select name='ordcre" + creadores + "'>" +
"<option value='0'>Selecciona un valor</option>" +
"<option>1</option>" +
"<option>2</option>" +
"<option>3</option>" +
"<option>4</option>" +
"</select>" +
"</td>" +
"</tr>" +
"</table>";
creadores++;
}

</script>
</head>

<body>
<?php
$creadores = array (1 => 'Juan', 2 => 'Luis', 3 => 'Fernando', 4 => 'Antonio');
?>
<form type ="POST" name = "form1" action="">
<tr>
<td colspan="2">
<div name ="dvcreador" id="dvcreador">
<table id="tabcreador">
<tr>
<td>CREADOR</td>
<td>ORDEN</td>
</tr>
<?php
$cont_cre = 1;
?>
<tr>
<td>
<select name="cre<?php echo $cont_cre;?>">
<option value="0">Selecciona un valor</option>
<?php
foreach ($creadores as $key => $creador){

echo "<option value='{$key}' >".addslashes($creador)."</option>";
}
?>
</select>
</td>
<td>
<select name="ordcre<?php echo $cont_cre;?>">
<option value="0">Selecciona un valor</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
</td>

<td><input type="submit" name="cre_<?php echo $key;?>" value="-" /></td>
</tr>
<?php
$cont_cre++;

?>
</table>
</div>
</td>
</tr>
<tr>
<td colspan="2"><input type="button" value="+" onclick="anadircre(<?php echo $cont_cre;?>);" /></td>
</tr>
<tr><input type = "submit" name = "enviar" value = "enviar"></tr>
</form>
<?php

$seguir=1;
$cont=1;
$varcre='';
$varord='';
while ($seguir){
$varcre = $_GET['cre'.$cont];
$varord = $_GET['ordcre'.$cont];
if (!$varcre){
$seguir=0;
} else {
echo $varcre.' '.$varord.'</br>';
$cont++;
}
}

?>

Última edición por jurena; 16/10/2011 a las 12:51
  #2 (permalink)  
Antiguo 16/10/2011, 10:41
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: añadir mediante función selectores

Hola, Jesús, así parece funcionar (no puedo testearlo en todos los navegadores porque estoy en una mac prestada). Sólo cambié el orden de algunas instrucciones php y silencié los errores:
Código PHP:
<?php
error_reporting
(0);
//include ('utils.php');
$creadores = array (=> 'Juan'=> 'Luis'=> 'Fernando'=> 'Antonio');

?>
<html>
<head>
<title></title>
<script type="text/javascript">
var creadores = 0;
function anadircre(vcre){
if (creadores==0){
creadores = vcre+1;
}
document.getElementById("dvcreador").innerHTML = "<table id='tabcreador'>" +
document.getElementById("tabcreador").innerHTML +
"<tr>" +
"<td>" +
"<select name='cre" + creadores + "'>" +
"<option value='0'>Selecciona un valor</option>" +
<?php
foreach($creadores as $key => $creador){
echo 
"\"<option value='{$key}'>".addslashes($creador)."</option>\" + ";
}
?>
"</select>" +
"</td>" +
"<td>" +
"<select name='ordcre" + creadores + "'>" +
"<option value='0'>Selecciona un valor</option>" +
"<option>1</option>" +
"<option>2</option>" +
"<option>3</option>" +
"<option>4</option>" +
"</select>" +
"</td>" +
"</tr>" +
"</table>";
creadores++;
}

</script>
</head>

<body>

<form type ="POST" name = "form1" action="">
<tr>
<td colspan="2">
<div name ="dvcreador" id="dvcreador">
<table id="tabcreador">
<tr>
<td>CREADOR</td>
<td>ORDEN</td>
</tr>
<?php
$cont_cre 
1;
?>
<tr>
<td>
<select name="cre<?php echo $cont_cre;?>">
<option value="0">Selecciona un valor</option>
<?php
foreach ($creadores as $key => $creador){

echo 
"<option value='{$key}' >".addslashes($creador)."</option>";
}
?>
</select>
</td>
<td>
<select name="ordcre<?php echo $cont_cre;?>">
<option value="0">Selecciona un valor</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
</td>

<td><input type="submit" name="cre_<?php echo $key;?>" value="-" /></td>
</tr>
<?php
$cont_cre
++;

?>
</table>
</div>
</td>
</tr>
<tr>
<td colspan="2"><input type="button" value="+" onclick="anadircre(<?php echo $cont_cre;?>);" /></td>
</tr>
<tr><input type = "submit" name = "enviar" value = "enviar"></tr>
</form>
<?php

$seguir
=1;
$cont=1;
$varcre='';
$varord='';
while (
$seguir){
$varcre $_GET['cre'.$cont];
$varord $_GET['ordcre'.$cont];
if (!
$varcre){
$seguir=0;
} else {
echo 
$varcre.' '.$varord.'</br>';
$cont++;
}
}

?>
  #3 (permalink)  
Antiguo 16/10/2011, 12:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: añadir mediante función selectores

Gracias, Andrés. Ahora genera los nuevos selectores, pero no devuelve los datos cargados en ellos. El orden de PHP es como sugieres, pues había que generar ese listado. No sé si esa es la causa o el silencio de los errores. Echaré un vistazo a ver si devuelve los datos de los selectores añadidos con la función.

Última edición por jurena; 16/10/2011 a las 13:03
  #4 (permalink)  
Antiguo 16/10/2011, 13:29
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: añadir mediante función selectores

Andrés,
el problema javascript ya lo resolviste, además de aclarar el código PHP. Para pasar todos los datos bien, sólo había que eliminar un incremento de contador y reubicar otro. Creo que ya funciona. El código es tal cual lo pongo debajo. Ahora sólo toca adaptarlo. Amenazo con volver a por alguna otra ayuda.
Código PHP:
Ver original
  1. <?php
  2. $creadores = array (1 => 'Juan', 2 => 'Luis', 3 => 'Fernando', 4 => 'Antonio');
  3.  
  4. ?>
  5. <html>
  6. <head>
  7. <title></title>
  8. <script type="text/javascript">
  9. var creadores = 0;
  10. function anadircre(vcre){
  11. if (creadores==0){
  12. creadores = vcre+1;
  13. }
  14. document.getElementById("dvcreador").innerHTML = "<table id='tabcreador'>" +
  15. document.getElementById("tabcreador").innerHTML +
  16. "<tr>" +
  17. "<td>" +
  18. "<select name='cre" + creadores + "'>" +
  19. "<option value='0'>Selecciona un valor</option>" +
  20. <?php
  21. foreach($creadores as $key => $creador){
  22. echo "\"<option value='{$key}'>".addslashes($creador)."</option>\" + ";
  23. }
  24. ?>
  25. "</select>" +
  26. "</td>" +
  27. "<td>" +
  28. "<select name='ordcre" + creadores + "'>" +
  29. "<option value='0'>Selecciona un valor</option>" +
  30. "<option>1</option>" +
  31. "<option>2</option>" +
  32. "<option>3</option>" +
  33. "<option>4</option>" +
  34. "</select>" +
  35. "</td>" +
  36. "</tr>" +
  37. "</table>";
  38. creadores++;
  39. }
  40.  
  41. </script>
  42. </head>
  43.  
  44. <body>
  45.  
  46. <form type ="POST" name = "form1" action="">
  47. <tr>
  48. <td colspan="2">
  49. <div name ="dvcreador" id="dvcreador">
  50. <table id="tabcreador">
  51. <tr>
  52. <td>CREADOR</td>
  53. <td>ORDEN</td>
  54. </tr>
  55. <?php
  56. $cont_cre = 1;
  57. ?>
  58. <tr>
  59. <td>
  60. <select name="cre<?php echo $cont_cre;?>">
  61. <option value="0">Selecciona un valor</option>
  62. <?php
  63. foreach ($creadores as $key => $creador){
  64. echo "<option value='{$key}'>".addslashes($creador)."</option>";
  65. }
  66. ?>
  67. </select>
  68. </td>
  69. <td>
  70. <select name="ordcre<?php echo $cont_cre;?>">
  71. <option value="0">Selecciona un valor</option>
  72. <option>1</option>
  73. <option>2</option>
  74. <option>3</option>
  75. <option>4</option>
  76. </select>
  77. </td>
  78. <td><input type="submit" name="cre_<?php echo $key;?>" value="-" /></td>
  79. </tr>
  80. <?php
  81. ?>
  82. </table>
  83. </div>
  84. </td>
  85. </tr>
  86. <tr>
  87. <td colspan="2"><input type="button" value="+" onclick="anadircre(<?php echo $cont_cre;?>);" /></td>
  88. </tr>
  89. <tr><input type = "submit" name = "enviar" value = "enviar"></tr>
  90. </form>
  91. <?php
  92.  
  93. $seguir=1;
  94. $cont=1;
  95. $varcre='';
  96. $varord='';
  97. while ($seguir){
  98. $varcre = $_GET['cre'.$cont];
  99. $varord = $_GET['ordcre'.$cont];
  100. if (!$varcre){
  101. $seguir=0;
  102. } else {
  103. echo $varcre.' '.$varord.'</br>';
  104. }
  105. $cont++;
  106. }
  107. ?>
  108. </body>
  109. </html>

Etiquetas: funcion, html, mediante, php, selectores
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 23:15.