Piszę tę odpowiedź tylko dlatego używam przycisków HTML z ASP.NET WebForms i nie mogłem znaleźć rozwiązanie dla których warto wymienić mój kawałek kodu z przykładów roboczych. Oto rozwiązanie, dlaczego nie działa. Mam nadzieję, że pomoże ci to zrozumieć, jak pomogło mi to sprawdzenie. To jest mój pierwszy post, więc przepraszam za styl.
<button type="button" id="buttonAddOrEdit" class="btn btn-success" runat="server" onclick="return myValidate()" onserverclick="buttonAddOrEdit_ServerClick">Zapisz</button>
i JavaScript funkcja:
function myValidation() {
if (validator.form()) {
//Project logic
return true;
}
else return false;
};
Korzystanie klienta boczny kliknij po poprawna walidacja nie wyzwalania zdarzenia po stronie serwera, który został zbindowanych przycisku. Rozwiązanie wymienione w celu zmiany kodu na:
onclick = "if (! MyValidation()) return;"
Działa ze względu na sposób, w jaki jest renderowany HTML na stronie z onserverclick. Przycisk onserverclick na html jest zastępowany przez metodę __doPostBack z javascript. Pełny kod przycisku html renderowanego po stronie klienta wygląda następująco:
<button onclick="return myValidation(); __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button> Błąd składni
I po zastąpieniu go, jeśli jest to oznaczenie.
<button onclick="if(!myValidation()) return; __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button>
Praca z funkcją return myValidate(); nie zmieni zdarzenia, ponieważ zwraca się przed __doPostBack.
Poniższy kod pozwoli ci dodać inny kod do przycisku, jeśli będzie to konieczne i nie spowoduje żadnych problemów.
Czy próbowałeś bez oknie alertu? Czytałem inny post jak ten ostatnio –
Testowałem to z ASP.NET 4 i uzyskać oczekiwane zachowanie. –
Sprawdź, czy nie występują błędy javascript, które powodują zatrzymanie zwracania fałszu. – Aristos