2009-09-08 3 views
13

В представлении MVC у меня есть форма, как показано ниже. когда пользователь нажимает кнопку отправки, я сначала хочу проверить что-то. Если все в порядке, отправьте форму. Если вы не пройдете проверку, сообщите пользователю предупреждение, а затем оставайтесь в представлении. Мой пример кода:Как остановить отправку формы?

<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();" /> 

<% } %> 

Но при тестировании, даже ответ == "N", форма по-прежнему отправляется. Как остановить отправку формы?

ответ

27

попробуйте изменить

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

в

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

Изменить свой код:

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

Примечание я добавил слово "возвращение".

+0

Большое спасибо. – KentZhou

0

Я бы воспользовался кнопкой ASP.NET или добавил свойство runat = "server" к кнопке HMTL, а затем использовал свойство UseSubmitBehavior = "false", чтобы отключить отправку/отправку формы. Затем вы можете вызвать form.Submit(); или аналогичный в вашем JavaScript.

+0

Это MVC (см. Теги). Нет обратных передач. –

7

Другой способ это можно сделать:

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

Это полезно, когда есть несколько способов, которыми может подаваться форма (например, раскрывающийся список автоматического покере, кнопки отправки и т. Д.). Таким образом, вы гарантируете, что проверка выполняется без необходимости перезаписывать обработчик onclick элемента ввода. –

+0

+1. Правильное место для размещения кода подтверждения/подтверждения формы всегда является формой. И присвоение его с помощью JavaScript означает, что у вас нет глупых атрибутов «return ...» wrapper. – bobince

Смежные вопросы