Lo hago en el lado del servidor. Es decir, el formulario siempre se envía al mismo destino, pero tengo un script del lado del servidor que es responsable de redirigir a la ubicación adecuada dependiendo de qué botón se haya presionado.
Si tiene varios botones, como
<form action="mypage" method="get">
<input type="submit" name="retry" value="Retry" />
<input type="submit" name="abort" value="Abort" />
</form>
Nota: que utiliza GET, pero funciona para la POST demasiado
A continuación, puede determinar fácilmente qué botón se pulsa - si la variable retry
existe y tiene un valor, entonces se presionó volver a intentar, y si la variable abort
existe y tiene un valor, se pulsó abortar. Este conocimiento puede usarse para redireccionar al lugar apropiado.
Este método no necesita Javascript.
Nota: que algunos navegadores son capaces de enviar un formulario sin necesidad de pulsar ningún botón (pulsando enter). No estándar como esto es, tiene que dar cuenta de ello, teniendo una acción clara default
y activando eso cuando no se presionen botones. En otras palabras, asegurarse de que su forma hace algo sensato (ya sea mostrando un mensaje de error útiles o asumiendo un defecto) cuando alguien éxitos entran en un elemento de forma diferente en lugar de hacer clic en un botón de envío, en lugar de romper .
Hay un problema de usabilidad aquí: ¿Qué sucede cuando presiono 'enter' en lugar de hacer clic g un botón? Tendrás que cancelar el evento de envío del formulario, muy probablemente. –
El formulario debe tener un botón que sea 'predeterminado' si se envía el formulario pero ninguno de los botones se activó. El valor predeterminado debe ser elegido sabiamente. Tenga en cuenta que la opción 'ingresar' solo es una extensión específica del navegador y no se debe confiar en ella, mientras que todos los navegadores son capaces de activar un botón específico. – thomasrutter
buen punto gracias – Stoob