Я пишу этот ответ только потому, что использую HTML-кнопки с ASP.NET WebForms и не могу найти решение, почему я должен заменить свой кусок кода на рабочие примеры. Вот решение, почему оно не работает. Надеюсь, это поможет вам понять проблему, как проверка мне помогла. Это мой первый пост, извините за стиль.
<button type="button" id="buttonAddOrEdit" class="btn btn-success" runat="server" onclick="return myValidate()" onserverclick="buttonAddOrEdit_ServerClick">Zapisz</button>
И функция JavaScript:
function myValidation() {
if (validator.form()) {
//Project logic
return true;
}
else return false;
};
Использование клика на стороне клиента после правильной проверки не вызывало событие на стороне сервера, которое было привязано к кнопке. Упомянутое решение изменить код на:
onclick = "if (! MyValidation ()) return;"
Работает из-за способа создания HTML, отображаемого на странице с помощью onserverclick. Onserverclick на кнопку HTML заменяется методом __doPostBack из JavaScript. Полный код HTML-кнопки, отображаемой на стороне клиента, выглядит следующим образом:
<button onclick="return myValidation(); __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button> Błąd składni
И после его замены на if if.
<button onclick="if(!myValidation()) return; __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button>
Работа с return myValidate (); не будет запускать событие, потому что оно возвращается до __doPostBack.
Следующий код позволит вам добавить другой код к кнопке, если это необходимо, и не вызовет никаких проблем.