Как остановить отправку формы?

В представлении 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", форма все еще представлена. Как остановить отправку формы?

Ответы

Ответ 1

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

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

к

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

Ответ 2

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

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

Ответ 3

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

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

Примечание. Я добавил слово "return".

Ответ 4

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