ASP.NET/JavaScript - Почему «Return False» не предотвращает обратную передачу? - PullRequest
7 голосов
/ 06 августа 2010

Мне кажется, что я делал этот сценарий много раз, и он обычно работает, поэтому я, очевидно, что-то упустил.

Вот моя кнопка ASP.NET на стороне сервера:

<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" OnClientClick="foo_Click();" />

Которые получают на клиенте как:

<input type="submit" name="reallylongclientid" value="Foo" onclick="foo_Click();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(reallylongclientidandpostbackoptions, false, false))" id="reallylongclientid" class="button foo">

Там нет никаких сюрпризов.

Вот сюрприз, в моей функции JavaScript:

function foo_Click() {
   return false;
}

Хорошо, так что естьбольше, чем это, но я сократил его, чтобы доказать свою точку зрения.

Когда я нажимаю кнопку, он вызывает функцию на стороне клиента и возвращает ложь.

Но он по-прежнему отправляет сообщенияобратно на сервер, почему?

Я в основном хочу сделать это по нажатию кнопки:

  1. Выполнить проверку на стороне клиента.
  2. Если проверка пройдена, отправьте обратно
  3. Если нет, отобразите некоторые сообщения об ошибках в форме.

Конечно, я мог бы изменить это на кнопку на стороне клиента (input type = "button")и вручную запускаю обратную передачу, когда я хочу, но мне не нужно этого делать.Или я должен?

1 Ответ

18 голосов
/ 06 августа 2010

написать return заявление, чтобы при нажатии на кнопку оно return false не позволяло отправить форму

 <asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" 
OnClientClick="return foo_Click();" />
...