2012-12-18 27 views
11

Im cố gắng để bỏ chọn hộp kiểm trong ComponentView của Tridion bởi jquery bằng cách sử dụng sự kiện tài liệu sẵn sàng trong một phần mở rộng giao diện:Bỏ chọn hộp kiểm trong ComponentView

$j(document).ready(function(){ 
    alert("is loaded"); 
    var field = $j('[type=checkbox][value=Aceptar]') 
    field.attr("checked",false); 
    console.log("field = " + field.is(':checked')); 
    alert("is checked field = " + field.is(':checked')); 
}); 

Vấn đề là trên "$ j (tài liệu). sẵn sàng "các giá trị trường dường như không được tải trong ComponentView. Cảnh báo của tôi trả về rằng trường được bỏ chọn, nhưng khi xem xong tải hộp kiểm được chọn. Có vẻ như "$ j (tài liệu) .ready" đã kích hoạt trước khi các giá trị được tải. Có ai biết tôi nên sử dụng sự kiện nào không?

+0

Xem tại đây để xem cách thực thi JavaScript khi chế độ xem được tải hoàn toàn: http://stackoverflow.com/questions/12901161/how-to-handle-loading-of-a-view-in-tridions-cme. Hãy chú ý đến câu trả lời từ John, vì anh ấy chỉ ra cách quản lý sự phụ thuộc đúng đắn. –

+1

Bạn cũng nên sử dụng Jquery.prop() thay vì Jquery.attr() để thay đổi các thuộc tính như "đã chọn". –

Trả lời

3

@Adrian Salazar @Sogo Cảm ơn sự giúp đỡ của bạn, có lẽ tôi nên sử dụng "chống đỡ" tốt hơn thay vì "attr" để thay đổi thuộc tính đó, nhưng vấn đề là như nhau, các trường vẫn chưa được tải để tôi không thể t thay đổi thuộc tính đó.

@Frank Tôi đã thử với "$ evt.addEventHandler ($ display," start ", onDisplayStarted);" trên màn hình "ComponentView" và mở rộng chế độ xem đó trên cấu hình của tiện ích mở rộng GUI của tôi, nhưng trên sự kiện đó, các trường vẫn không được tải và mỗi lần tôi cố gắng truy cập vào trường hộp kiểm của tôi, nó được cho là "không xác định".

Cuối cùng tôi quản lý để bỏ chọn hộp kiểm suscribing sự kiện tải của các thành phần:

"EventSystem.Subscribe <Component, LoadEventArgs> (OnComponentLoad, EventPhases.Processed);" 

như Nuno giải thích ở đây http://www.tridiondeveloper.com/inheriting-metadata-on-organizational-items#more-1073, ông sử dụng nó trên một OrganizationalItem nhưng hoạt động tương tự cho một thành phần.

Cảm ơn sự giúp đỡ của bạn !!

2

thử với,

field.prop("checked",false); 

field.is(':checked') đang làm việc tốt và nếu bạn cần, bạn có thể sử dụng prop('checked') thay vì that.anyway đảm bảo phiên bản jquery của bạn là 1.6 hoặc cao hơn nếu bạn đang sử dụng prop()

Các vấn đề liên quan