2009-09-08 30 views
13

En una vista de MVC, tengo un formulario de la siguiente manera. cuando el usuario hace clic en el botón de enviar, quiero verificar algo en primer lugar. Si está bien, envíe el formulario. Si no pasa la verificación, envíe un mensaje de alerta al usuario y luego permanezca en la vista. Mi código de ejemplo como:¿Cómo detener el envío del formulario?

<script type="text/javascript"> 
    function CheckingStatus() { 
    //..... 
    if (answer == "N") { 
     alert("You choose No."); 
     return false; 
     } 
    } 
</script> 

<% Html.RenderPartial("MyForm"); %> 
.... 

<input id="btnSubmit" type="submit" value="Submit" onclick="CheckingStatus();" /> 

<% } %> 

Pero cuando las pruebas, incluso responder == "N", el formulario está siendo enviado. ¿Cómo detener el envío del formulario?

Respuesta

27

intente cambiar

<input id="btnSubmit" type="submit" value="Submit" onclick="CheckingStatus();" /> 

a

<input id="btnSubmit" type="submit" value="Submit" onclick="return CheckingStatus();" /> 
6

cambiar el código para:

<input id="btnSubmit" type="submit" value="Submit" onclick="return CheckingStatus();" /> 

Nota añadí la palabra "retorno".

+0

Muchas gracias. – KentZhou

0

Utilizaría un botón ASP.NET, O agregaría la propiedad runat = "server" al botón HMTL y luego usaría la propiedad UseSubmitBehavior = "false" para deshabilitar la devolución de datos/el envío del formulario. A continuación, puede llamar a form.Submit(); o similar en tu JavaScript.

+0

Esto es MVC (ver etiquetas). No hay devoluciones –

7

Otra forma en que se puede hacer:

document.forms['MyForm'].onsubmit = CheckingStatus; 
+0

Esto es útil cuando hay varias maneras diferentes en que se puede enviar un formulario (por ejemplo, cuadros de lista desplegable de devolución automática, botones de envío, etc.). De esta forma, se garantiza que la validación se produce sin tener que sobrescribir el controlador onclick de un elemento de entrada. –

+0

+1. El lugar correcto para poner el código de validación/confirmación del formulario siempre es form.onsubmit. Y asignarlo desde JavaScript significa que no tiene el contenedor tonto de valor de atributo 'return ...'. – bobince

Cuestiones relacionadas