Tôi đang viết câu trả lời này chỉ vì tôi đang sử dụng các nút html với ASP.NET WebForms và tôi không thể tìm thấy giải pháp tại sao tôi nên thay miếng của tôi mã với các ví dụ làm việc. Đây là giải pháp tại sao nó không hoạt động. Hy vọng nó sẽ giúp bạn hiểu vấn đề như kiểm tra nó đã giúp tôi. Đây là bài viết đầu tiên của tôi, vì vậy xin lỗi cho phong cách.
<button type="button" id="buttonAddOrEdit" class="btn btn-success" runat="server" onclick="return myValidate()" onserverclick="buttonAddOrEdit_ServerClick">Zapisz</button>
Và chức năng javascript:
function myValidation() {
if (validator.form()) {
//Project logic
return true;
}
else return false;
};
Sử dụng phía khách hàng nhấp chuột sau khi đúng xác nhận đã không kích hoạt sự kiện trên phía máy chủ được binded đến nút. Giải pháp được đề cập để thay đổi đoạn mã thành:
onclick = "if (! MyValidation()) trả về;"
Hoạt động vì cách html được hiển thị trên trang có onserverclick được tạo. Onserverclick trên nút html đang được thay thế bằng phương thức __doPostBack từ javascript. Mã fullcode của nút html được hiển thị ở phía máy khách trông như sau:
<button onclick="return myValidation(); __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button> Błąd składni
Và sau khi thay thế bằng nếu có quy định.
<button onclick="if(!myValidation()) return; __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button>
Làm việc với return myValidate(); sẽ không thu hút sự kiện vì nó trả về trước __doPostBack.
Mã sau sẽ cho phép bạn thêm một số mã khác vào nút nếu cần thiết và sẽ không gây ra bất kỳ sự cố nào.
Bạn đã cố gắng mà không có hộp cảnh báo? Tôi đã đọc một bài đăng như thế này gần đây –
Tôi đã thử nghiệm điều này với ASP.NET 4 và nhận được hành vi mong đợi. –
Kiểm tra lỗi javascript ngăn nó không trả về false – Aristos