Khi chỉnh sửa lưới của tôi, nếu tôi nhấp vào bên ngoài lưới, hộp tôi đang chỉnh sửa vẫn có thể chỉnh sửa. Làm cách nào để tôi nhận được ô được chỉnh sửa để "hoàn thành" chỉnh sửa khi nó bị mất tiêu điểm?Slickgrid - Mất tiêu điểm để kết thúc chỉnh sửa
Trả lời
Mã sau sẽ lưu bản chỉnh sửa hiện tại.
Slick.GlobalEditorLock.commitCurrentEdit();
Bạn sẽ cần đặt điều này bên trong trình xử lý sự kiện mà bạn cho rằng sẽ kích hoạt lưu. Ví dụ, nếu bạn đang sử dụng soạn thảo văn bản mẫu plugin, tôi tin rằng một lớp editor-text
CSS được thêm vào lĩnh vực đầu vào đó là tạo ra khi bạn đang chỉnh sửa một tế bào nên một cái gì đó như thế này nên làm việc:
$('#myGrid').on('blur', 'input.editor-text', function() {
Slick.GlobalEditorLock.commitCurrentEdit();
});
tôi thấy rằng tôi cần thiết để quấn handler clav trong một thời gian chờ:
$("#myGrid").on('blur', 'input.editor-text', function() {
window.setTimeout(function() {
if (Slick.GlobalEditorLock.isActive())
Slick.GlobalEditorLock.commitCurrentEdit();
});
});
để tránh các lỗi như:
Uncaught NotFoundError: An attempt was made to reference a Node in a context where it does not exist.
khi sử dụng bàn phím để di chuyển. Có lẽ các bộ xử lý mờ mới cháy trước khi SlickGrid có thể làm xử lý riêng của mình và điều này gây ra vấn đề.
Thật không may, có lẽ do sự khác biệt trong xử lý sự kiện, phiên bản của Grame phá vỡ điều hướng bàn phím trong chrome. Để sửa lỗi này, tôi đã thêm kiểm tra khác để chỉ hành chỉnh sửa, nếu các yếu tố mới được tập trung không phải là một yếu tố biên tập trong lưới (do hàng hải bàn phím):
$('#grid').on('blur.editorFocusLost', 'input.editor-text', function() {
window.setTimeout(function() {
var focusedEditor = $("#grid :focus");
if (focusedEditor.length == 0 && Slick.GlobalEditorLock.isActive()) {
Slick.GlobalEditorLock.commitCurrentEdit();
}
});
});
Điều này dường như làm việc trong hiện tại các phiên bản của firefox, chrome và ie.
- 1. hàng có thể chỉnh sửa và không thể chỉnh sửa trong slickgrid
- 2. Textmate2 lưu trên tiêu điểm bị mất
- 3. Phím tắt Xcode 4 để hoán đổi tiêu điểm giữa trình chỉnh sửa và trình chỉnh sửa trợ lý
- 4. Có thể chỉnh sửa để chỉnh sửa liên kết. Giúp
- 5. Nhấn bên ngoài edittext để mất tiêu điểm
- 6. Bắt buộc trường văn bản Ca cao để kết thúc chỉnh sửa
- 7. Chỉnh sửa pdf để sửa đổi tiêu đề
- 8. Trình chỉnh sửa HTML - chỉnh sửa cả thẻ bắt đầu và thẻ kết thúc cùng một lúc
- 9. Làm cách nào để xóa tiêu điểm khỏi EditText khi người dùng chỉnh sửa xong?
- 10. vấn đề tiêu điểm bằng cách sử dụng JComboBox làm trình chỉnh sửa ô trong JTable
- 11. JSF thành phần tùy chỉnh mất tiêu điểm đầu vào trên bản cập nhật ajax
- 12. Ẩn bàn phím khi bị mất tiêu điểm khỏi UISearchBar
- 13. Buộc div có thể chỉnh sửa nội dung để dừng chấp nhận đầu vào sau khi mất tiêu điểm trong Webkit
- 14. Chỉnh sửa văn bản rõ ràng trên tiêu điểm đầu tiên - Android
- 15. Các tiêu đề cột xoay của SlickGrid
- 16. Powershell Chỉnh sửa Xml khiến Visual Studio báo cáo Kết thúc Dòng Không phù hợp
- 17. Chạy JavaScript khi phần tử mất tiêu điểm
- 18. tắt tính năng làm mới trang khi mất tiêu điểm
- 19. ListView trong SlidingDrawer mất tiêu điểm sau onResume
- 20. Python Chỉnh sửa tiêu đề CSV
- 21. Kiểm tra xem cửa sổ có bị mất tiêu điểm
- 22. AutoCompleteTextView vấn đề về tiêu điểm bị mất
- 23. Chỉ một số cột nhất định có thể chỉnh sửa trong SlickGrid
- 24. Đặt tiêu điểm vào phần tử có thể chỉnh sửa div
- 25. Thay đổi dữ liệu di động slickgrid sau khi chỉnh sửa
- 26. Trình chỉnh sửa trong nhật thực đã biến mất
- 27. Làm cách nào để phát hiện mất tập trung từ đối tượng chỉnh sửa văn bản?
- 28. WCF Mex Điểm kết thúc cho nhiều ràng buộc
- 29. Tạo một cột trong SlickGrid siêu liên kết
- 30. Kết hợp SlickGrid Lọc Ví dụ
Tôi có thể thiếu gì đó ở đây. Về lý thuyết, công trình này - bởi vì nếu tôi thêm nó vào giao diện điều khiển firebug và sau đó lấy tiêu điểm và mất tiêu điểm thì nó hoạt động một lần. Nhưng trong mã, ngay cả trong document.ready, nó không hoạt động: \ – sunzyflower
Sai lầm của tôi, ví dụ mờ đó sẽ không hoạt động vì các trường nhập được thêm vào động. Bạn sẽ cần phải ràng buộc sự kiện bằng cách sử dụng 'on' để thay thế. Tôi đã cập nhật ví dụ, hãy thử. – clav
Tôi nhận được lỗi sau: LoạiError: jQuery (...). Không phải là chức năng [Break On This Error] \t jQuery ('# myGrid'). On ('blur', 'input .editor-text ', function() { – sunzyflower