Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: PabloPbl en 24 Enero 2017, 03:53 am



Título: ¿Como pasar parámetros de "JS" al "action" de la etiqueta form?
Publicado por: PabloPbl en 24 Enero 2017, 03:53 am
Hola a todos, ¿como puedo pasar parametros de una funcion javascript al parametro "action" la etiqueta form de la siguiente linea de código?:

Código
  1. <form method="POST" action="javascript:editarPost();">
  2.  
  3. </form>
  4.  

Ya intente de estas formas:
Código
  1. <form method="POST" action="javascript:editarPost();">
  2.  
  3. </form>
  4.  

Código
  1. <form method="POST" action="editarPost();">
  2.  
  3. </form>
  4.  

Código
  1. <form method="POST" action="editarPost()">
  2.  
  3. </form>
  4.  

Pero ninguna me sirve, el codigo javascript es el siguiente, el cual funciona perfectamente, ya lo he probado:

Código
  1. <script type="text/javascript">
  2.  
  3. function editarPost() {
  4. tituloPost = "<?php echo $_GET['titulo']; ?>";
  5.  
  6. palabras = tituloPost.split(" ");
  7. cadenaLista = "";
  8. for (var i = 0; i < palabras.length; i++) {
  9. cadenaLista += palabras[i]+"%20";
  10. }
  11. pagina = "editarPost.php?titulo="+cadenaLista;
  12. return pagina;
  13. }
  14.  
  15. </script>
  16.  
Este código js esta al principio de las etiquetas body.

Esto me funciona perfecto con el onClick, pero con el action no me sirve, y si o si lo necesito con ese parámetro, con el onClick no me sirve, alguna sugerencia?


Título: Re: ¿Como pasar parámetros de "JS" al "action" de la etiqueta form?
Publicado por: engel lex en 24 Enero 2017, 04:02 am
eso se hace onclick, no en action, si lo necesitas en action, es que algo estás haciendo mal o no conoces, explicame para que lo necesitas


Título: Re: ¿Como pasar parámetros de "JS" al "action" de la etiqueta form?
Publicado por: PabloPbl en 24 Enero 2017, 04:34 am
Estoy creando una web(fines educativos) en la cual cualquiera puede crear temas anonimamente(sin registrarse), ya hice la parte en donde se guardan los temas creados en una base de datos, ahora estoy haciendo que esos temas creados se puedan editar.

Cuando la persona esta viendo un tema creado, tiene la opción de editar dicho tema, la cual lo manda a la pagina de edicion donde hay un formulario, que es el siguiente:

editarPostFormulario.php
Código
  1. <!DOCTYPE html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title>Bugatty Veyron</title>
  5. <link href="style.css" rel="stylesheet" type="text/css">
  6.  
  7. </head>
  8. <body>
  9. <script type="text/javascript">
  10.  
  11. function editarPost() {
  12. tituloPost = "<?php echo $_GET['titulo']; ?>";
  13.  
  14. palabras = tituloPost.split(" ");
  15. cadenaLista = "";
  16. for (var i = 0; i < palabras.length; i++) {
  17. cadenaLista += palabras[i]+"%20";
  18. }
  19. pagina = "editarPost.php?titulo="+cadenaLista;
  20. return pagina;
  21. }
  22.  
  23. </script>
  24. <div id="cabezera">
  25. <h1>PÁGINA BUGATTY VEYRON</h1>
  26. <ul>
  27. <li><a href="index.php" id="liInicio">Inicio</a></li>
  28. <li><a href="Calculadora.html" id="liCalculadora">Calculadora</a></li>
  29. <li><a href="CrearTemaFormulario.php" id="liCrearTema">Crear tema</a></li>
  30. </ul>
  31. </div>
  32. <div id="formularioCrearTema">
  33. <form method="POST" action="<?php $_GET['titulo'] ?>">
  34. <tr>
  35. <td>Nombre: <input id="nombre" type="text" size="85" name="nombre" style="background: transparent; border: 2px solid black; border-radius: 10px; padding: 5px;"></td>
  36. <td></td>
  37. </tr>
  38. <tr>
  39. <td>Titulo del tema: <input id="titulo" type="text" size="85" name="titulo" style="background: transparent; border: 3px solid black; border-radius: 10px; padding: 5px;"></td>
  40. <td></td>
  41. </tr>
  42. <tr>
  43. <td><textarea rows="15" cols="100" id="textArea" name="textArea" style="background: transparent; border: 3px solid black; border-radius: 10px; padding: 5px;"></textarea></td>
  44. </tr>
  45. <tr>
  46. <td><input type="submit" value="Editar tema"></td>
  47. </tr>
  48. </table>
  49. </form>
  50. <script type="text/javascript">
  51. var nombre = "<?php include('code.php'); $post = new Post($_GET['titulo']); echo $post->nombre; ?>";
  52. var titulo = "<?php echo $_GET['titulo']; ?>";
  53. var cuerpo = "<?php echo $post->cuerpo; ?>";
  54.  
  55. var nombreForm = document.getElementById('nombre');
  56. nombreForm.value = nombre;
  57.  
  58. var tituloForm = document.getElementById('titulo');
  59. tituloForm.value = titulo;
  60.  
  61. var cuerpoForm = document.getElementById('textArea');
  62. cuerpoForm.innerHTML = cuerpo;
  63. </script>
  64. </div>
  65. </body>
  66. </html>
  67.  

Y cuando la persona le da en el botón, de editarTema, necesito mandar el titulo original, es decir el antiguo, no el editado para localizarlo en la base de datos y luego editarlo en la web que sigue, y los tengo que pasar por el método GET, por que por el POST no puedo, osea por URL.
Lo que escriba la persona lo mando atravez del método POST del formulario, que es lo que voy a obtener en la siguiente web que me redirija el parámetro action del formulario.

[size=16t]Ahora lo que quiero lograr es que en el la siguiente pagina pueda obtener el titulo original(NO EL EDITADO), para ubicar el tema en la base de datos y editarlo como corresponde.

Como puedo hacer eso? Otra forma que se me ocurría es guardarlo en una etiqueta label al titulo y obtenerlo desde POST en la siguiente pagina, pero el diseño no quedaría como quiero[/size]


Título: Re: ¿Como pasar parámetros de "JS" al "action" de la etiqueta form?
Publicado por: engel lex en 24 Enero 2017, 04:53 am
si puedes hacer post, para ese fin justamente exíste el input type="hidden"

no entendí bien lo que quieres hacer y sigo sin comprender para que ponerlo en action

en caso que quieras es ponerlo para que se ejecute en el form sin que se haga submit del form, lo que debes hacer es colocarlo onclick normal y retornar false, en ese caso el form recibe el false del jscript y se anula, esto se usa por ejemplo cuando aplicas ajax


Título: Re: ¿Como pasar parámetros de "JS" al "action" de la etiqueta form?
Publicado por: PabloPbl en 24 Enero 2017, 05:11 am
Muichas gracias!  logre solucionar mi problema, no sabia que existía esa etiqueta, me has salvado xD :P
Saludos!