Quería usar Javascript cambiar la acción de un formulario, por lo que podría tener diferentes entradas de envío dentro del mismo formulario que enlaza a diferentes páginas. También tuve la complicación adicional de usar la reescritura de Apache para cambiar example.com/page-name
en example.com/index.pl?page=page-name
. Descubrí que cambiar la acción del formulario provocó que se procesara example.com/index.pl
(sin parámetro de página), aunque se visualizara la URL esperada (example.com/page-name
) en la barra de direcciones. Para evitar esto, utilicé Javascript para insertar un campo oculto para establecer el parámetro de página. Todavía cambié la acción del formulario, solo para que la barra de direcciones mostrara la URL correcta.
function setAction (element, page)
{
if(checkCondition(page))
{
/* Insert a hidden input into the form to set the page as a parameter.
*/
var input = document.createElement("input");
input.setAttribute("type","hidden");
input.setAttribute("name","page");
input.setAttribute("value",page);
element.form.appendChild(input);
/* Change the form's action. This doesn't chage which page is displayed,
* it just make the URL look right.
*/
element.form.action = '/' + page;
element.form.submit();
}
}
En la forma:
<input type="submit" onclick='setAction(this,"my-page")' value="Click Me!" />
Éstos son mis Apache reescribir reglas:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/index.pl?page=$1&%{QUERY_STRING}
estaría interesado en alguna explicación de por qué sólo la creación de la acción no lo hizo trabajo.
Creo que quieres decir 'document ['search-theme-form']', 'document.search -theme-form' en realidad no funciona. –
Es posible que necesite definir el nombre del formulario sin guiones – hop