¿Como pasar parámetros de "JS" al "action" de la etiqueta form?

Iniciado por PabloPbl, 24 Enero 2017, 03:53 AM

0 Miembros y 2 Visitantes están viendo este tema.

PabloPbl

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 (html4strict) [Seleccionar]

<form method="POST" action="javascript:editarPost();">

</form>


Ya intente de estas formas:
Código (html4strict) [Seleccionar]

<form method="POST" action="javascript:editarPost();">

</form>


Código (html4strict) [Seleccionar]

<form method="POST" action="editarPost();">

</form>


Código (html4strict) [Seleccionar]

<form method="POST" action="editarPost()">

</form>


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

Código (javascript) [Seleccionar]

<script type="text/javascript">

function editarPost() {
tituloPost = "<?php echo $_GET['titulo']; ?>";

palabras = tituloPost.split(" ");
cadenaLista = "";
for (var i = 0; i < palabras.length; i++) {
cadenaLista += palabras[i]+"%20";
}
pagina = "editarPost.php?titulo="+cadenaLista;
return pagina;
}

</script>

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?

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

PabloPbl

#2
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 (html4strict) [Seleccionar]

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Bugatty Veyron</title>
<link href="style.css" rel="stylesheet" type="text/css">

</head>
<body>
<script type="text/javascript">

function editarPost() {
tituloPost = "<?php echo $_GET['titulo']; ?>";

palabras = tituloPost.split(" ");
cadenaLista = "";
for (var i = 0; i < palabras.length; i++) {
cadenaLista += palabras[i]+"%20";
}
pagina = "editarPost.php?titulo="+cadenaLista;
return pagina;
}

</script>
<div id="cabezera">
<h1>PÁGINA BUGATTY VEYRON</h1>
<ul>
<li><a href="index.php" id="liInicio">Inicio</a></li>
<li><a href="Calculadora.html" id="liCalculadora">Calculadora</a></li>
<li><a href="CrearTemaFormulario.php" id="liCrearTema">Crear tema</a></li>
</ul>
</div>
<div id="formularioCrearTema">
<form method="POST" action="<?php $_GET['titulo'?>">
<table>
<tr>
<td>Nombre: <input id="nombre" type="text" size="85" name="nombre" style="background: transparent; border: 2px solid black; border-radius: 10px; padding: 5px;"></td>
<td></td>
</tr>
<tr>
<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>
<td></td>
</tr>
<tr>
<td><textarea rows="15" cols="100" id="textArea" name="textArea" style="background: transparent; border: 3px solid black; border-radius: 10px; padding: 5px;"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="Editar tema"></td>
</tr>
</table>
</form>
<script type="text/javascript">
var nombre = "<?php include('code.php'); $post = new Post($_GET['titulo']); echo $post->nombre?>";
var titulo = "<?php echo $_GET['titulo']; ?>";
var cuerpo = "<?php echo $post->cuerpo?>";

var nombreForm = document.getElementById('nombre');
nombreForm.value = nombre;

var tituloForm = document.getElementById('titulo');
tituloForm.value = titulo;

var cuerpoForm = document.getElementById('textArea');
cuerpoForm.innerHTML = cuerpo;
</script>
</div>
</body>
</html>


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]

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

PabloPbl

Muichas gracias!  logre solucionar mi problema, no sabia que existía esa etiqueta, me has salvado xD :P
Saludos!