Nếu bạn có JSF <h:commandLink>
(sử dụng sự kiện onclick
của số <a>
để gửi biểu mẫu hiện tại), làm cách nào để bạn thực thi JavaScript (chẳng hạn như yêu cầu xác nhận xóa) trước khi thực hiện hành động?Làm cách nào để thực thi Javascript trước khi thực hiện hành động JSF <h: commandLink>?
Trả lời
<h:commandLink id="myCommandLink" action="#{myPageCode.doDelete}">
<h:outputText value="#{msgs.deleteText}" />
</h:commandLink>
<script type="text/javascript">
if (document.getElementById) {
var commandLink = document.getElementById('<c:out value="${myPageCode.myCommandLinkClientId}" />');
if (commandLink && commandLink.onclick) {
var commandLinkOnclick = commandLink.onclick;
commandLink.onclick = function() {
var result = confirm('Do you really want to <c:out value="${msgs.deleteText}" />?');
if (result) {
return commandLinkOnclick();
}
return false;
}
}
}
</script>
hành động javascript khác (như xác nhận hình thức đầu vào vv) có thể được thực hiện bằng cách thay thế các cuộc gọi đến confirm()
với một cuộc gọi đến một hàm khác.
Bạn vẫn có thể sử dụng onclick. JSF render kit specification (xem Hành vi mã hóa) mô tả cách liên kết nên xử lý nó. Đây là một phần quan trọng (những gì nó ám cho onclick):
var a=function(){/*your onclick*/}; var b=function(){/*JSF onclick*/}; return (a()==false) ? false : b();
Vì vậy, chức năng của bạn sẽ không được thông qua các đối tượng sự kiện (mà không phải là trình duyệt chéo đáng tin cậy anyway), nhưng trở về đúng/sai sẽ ngắn mạch nộp hồ sơ.
Tôi không thể thêm thuộc tính onclick vào
Trong JSF 1.2, bạn có thể chỉ định các sự kiện onclick.
Ngoài ra, các thư viện khác như MyFaces hoặc IceFaces triển khai trình xử lý "onclick".
gì bạn cần phải làm sau đó chỉ đơn giản là:
<h:commandLink action="#{bean.action}" onclick="if(confirm('Are you sure?')) return false;" />
Lưu ý: bạn có thể không chỉ làm return confirm(...)
vì điều này sẽ ngăn chặn các phần còn lại của JavaScript trong sự kiện onClick xảy ra, mà sẽ có hiệu quả ngăn chặn hành động của bạn xảy ra bất kể người dùng đã trả lại gì!
Nếu bạn muốn thực hiện điều gì đó trước khi biểu mẫu được đăng, để xác nhận ví dụ, hãy thử sự kiện biểu mẫu trênSubmit. Một cái gì đó như:
myform.onsubmit = function(){confirm("really really sure?")};
này không bao giờ làm việc cho tôi,
onclick="if(confirm('Are you sure?')) return false;" />
nhưng điều này đã làm
onclick="if(confirm(\"Are you sure?\"))return true; else return false;"
Tôi không thể thêm thuộc tính onclick vào
@ grant-wagner, tôi nhận ra rằng rất nhiều năm nay nhưng có lẽ việc triển khai bạn đã sử dụng vào thời điểm đó đã bị phá vỡ – akostadinov
có thể được đơn giản hóa như thế này
onclick="return confirm('Are you sure?');"
buồn cười mà các cấu trúc 'if' được đề xuất trong tất cả các bài viết dưới đây bởi các nhà phát triển với một số kinh nghiệm .. 'm học từ họ :) – akostadinov
var deleteClick;
var mess="xxx";
function assignDeleteClick(link) {
if (link.onclick == confirmDelete) {
return;
}
deleteClick = link.onclick;
link.onclick = confirmDelete;
}
function confirmDelete() {
var ans = confirm(mess);
if (ans == true) {
return deleteClick();
} else {
return false;
}
}
sử dụng mã này cho jsf 1.1.
này đã làm việc cho tôi:
<h:commandButton title="#{bundle.NewPatient}" action="#{identifController.prepareCreate}"
id="newibutton"
onclick="if(confirm('#{bundle.NewPatient}?'))return true; else return false;"
value="#{bundle.NewPatient}"/>
Điều đó có thể được đơn giản hóa là 'onclick =" return confirm (' Bạn có chắc chắn? ') "'. Không cần kiểm tra giá trị boolean để trả về giá trị boolean. Chỉ cần trả lại trực tiếp. – BalusC
Có cách nào dễ dàng trong Primefaces để triển khai thực hiện ở trên bằng cách sử dụng '
- 1. Thực thi mã trước khi bất kỳ hành động
- 2. Làm cách nào để thực thi chức năng Javascript trước khi tải trang?
- 3. Làm cách nào để thực thi JavaScript sau khi tải trang?
- 4. thực thi javascript trước khi dom đang tải
- 5. Thực thi mã javascript ngay trước khi gửi trang
- 6. Theo dõi thực thi Javascript trong Chrome - cách thực hiện?
- 7. JSF - Làm cách nào để triển khai JavaScript "Bạn có chắc chắn không?" nhắc cho <h: commandButton>
- 8. Cách đính kèm tác vụ tùy chỉnh để thực thi trước khi thực hiện nhiệm vụ kiểm tra trong sbt?
- 9. Làm cách nào để "nhiều ngữ cảnh thực thi" của Javascript hoạt động?
- 10. Làm cách nào để tránh thực hiện lại hành động gửi biểu mẫu cuối cùng khi trang được làm mới?
- 11. Khi thêm thông báo khuôn mặt vào JSF, hành động của tôi không được thực hiện?
- 12. Làm cách nào để thực hiện hành động khi hộp kiểm được chọn bằng JQuery?
- 13. Đợi trước khi kích hoạt một hàm để thực thi trong JavaScript
- 14. Cách tạo Chủ đề mới để thực hiện một hành động <T>
- 15. Làm cách nào để xóa các phần tử script trước khi chúng được thực thi?
- 16. Nhận hành động thực hiện trong HttpModule
- 17. Thực thi mã trước chính()
- 18. Thực thi mã trước khi hàm được gọi được thực thi
- 19. Truy vấn Echo trước khi thực thi và không được thực hiện trong trình mã hóa Bản ghi Hoạt động
- 20. Thực hiện lệnh in cmake trước khi thực hiện
- 21. Cách phát hiện thực thi javascript trong điều khiển WebBrowser
- 22. UIRefreshControl - Làm cách nào để thực hiện hành động làm mới sau khi chạm được phát hành?
- 23. Làm cách nào để bạn thực thi một khối JavaScript được nạp động?
- 24. cách xem mã JavaScript hiện đang thực thi là gì?
- 25. Php, đợi 5 giây trước khi thực hiện một hành động
- 26. JavaScript: thực hiện nút hiện tại <script>?
- 27. Làm thực hiện lệnh in trước khi thực hiện khi không sử dụng CMake
- 28. Thực hiện cách ly JavaScript
- 29. Làm cách nào để thực thi một hàm JavaScript sau khi tải trang được hoàn tất?
- 30. cách làm \ n làm việc trong <h: inputTextarea>
liên quan: http://stackoverflow.com/questions/4571488/confirmation-on-submit – BalusC
@ BalázsMáriaNémeth Xin giải thích cho tôi làm thế nào họ không? – EJP