2012-12-18 25 views
11

Im próbuje odznaczyć pole wyboru w ComponentView z Tridion przez jQuery używając dokument gotowy zdarzenie w rozszerzeniu GUI:Odznacz pole wyboru w 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')); 
}); 

Problemem jest to, że na „$ j (dokumentu). ready "wartości pól nie są załadowane do ComponentView. Moje powiadomienie zwraca, że ​​pole nie jest zaznaczone, ale kiedy widok się kończy, pole wyboru jest zaznaczone. Wydaje się, że "$ j (dokument) .ready" jest uruchamiany przed załadowaniem wartości. Czy ktoś wie, z którego zdarzenia powinienem skorzystać?

+0

Zobacz tutaj, jak wyświetlić JavaScript po całkowitym załadowaniu widoku: http://stackoverflow.com/questions/12901161/how-to-handle-loading-of-a-view-in-tridions-cme. Zwróć szczególną uwagę na odpowiedź Johna, ponieważ pokazuje, jak właściwie zarządzać zależnościami. –

+1

Powinieneś również użyć Jquery.prop() zamiast Jquery.attr() do zmiany właściwości, takich jak "checked". –

Odpowiedz

3

@Adrian Salazar @Sogo Dzięki za pomoc, może powinienem użyć lepszego "prop" zamiast "attr", aby zmienić tę właściwość, ale problem był ten sam, pola nie były jeszcze załadowane, więc nie mogłem " t zmienić tę właściwość.

@Frank Próbowałem z "$ evt.addEventHandler ($ display," start ", onDisplayStarted);" na ekranie "ComponentView" i rozszerzając ten widok na konfigurację mojego rozszerzenia GUI, ale w tym przypadku pola nadal nie są załadowane, a za każdym razem, gdy próbowałem uzyskać dostęp do mojego pola wyboru, było to "nieokreślone".

Wreszcie udało mi się usunąć zaznaczenie pola wyboru suscribing do przypadku obciążenia składnika:

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

jak Nuno wyjaśnia tutaj http://www.tridiondeveloper.com/inheriting-metadata-on-organizational-items#more-1073, używa go na OrganizationalItem ale działa tak samo dla komponentu.

Dzięki za pomoc !!

2

spróbuj,

field.prop("checked",false); 

field.is(':checked') działa poprawnie, a jeśli trzeba, można użyć prop('checked') zamiast that.anyway upewnić się, że wersja jQuery 1.6 lub wyższy, jeśli zamierzasz korzystać z podpory()