2012-12-18 8 views
11

Im Versuch, eine Checkbox in der ComponentView von Tridion von Jquery deaktivieren Sie das Dokument bereit Ereignis in einer GUI-Erweiterung mit:Uncheck eine Checkbox in 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')); 
}); 

Das Problem ist, dass auf „$ j (Dokument). fertig "Die Feldwerte scheinen in der ComponentView nicht geladen zu sein. Meine Warnung gibt zurück, dass das Feld deaktiviert ist, aber wenn die Ansicht beendet ist, wird das Kontrollkästchen aktiviert. Es scheint, dass das "$ j (document) .ready" ausgelöst wird, bevor die Werte geladen werden. Weiß jemand, welches Ereignis ich verwenden soll?

+0

Schauen Sie hier, um zu sehen, wie JavaScript ausgeführt wird, wenn die Ansicht vollständig geladen ist: http://stackoverflow.com/questions/12901161/how-to-handle-loading-of-a-view-in-tridions-cme. Achte genau auf die Antwort von John, da er zeigt, wie man die Abhängigkeit richtig verwaltet. –

+1

Sie sollten auch Jquery.prop() anstelle von Jquery.attr() verwenden, um Eigenschaften wie "checked" zu ändern. –

Antwort

3

@Adrian Salazar @Sogo Danke für Ihre Hilfe, vielleicht sollte ich besser "prop" anstelle von "attr" verwenden, um diese Eigenschaft zu ändern, aber das Problem war das gleiche, die Felder waren noch nicht geladen, so konnte ich nicht t ändere diese Eigenschaft.

@Frank Ich versuchte mit "$ evt.addEventHandler ($ display," start ", onDisplayStarted);" auf der "ComponentView" -Anzeige, und erweitern diese Ansicht auf die Konfiguration meiner GUI-Erweiterung, aber auf diesem Ereignis sind die Felder auch immer noch nicht geladen, und jedes Mal, wenn ich versuchte, auf mein Kontrollkästchenfeld zuzugreifen, sagte es, dass "undefiniert" war.

Schließlich gelang es mir, suscribing zum Ladeereignis der Komponente des Kontrollkästchen zu deaktivieren:

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

als Nuno hier http://www.tridiondeveloper.com/inheriting-metadata-on-organizational-items#more-1073 erklärt, er es auf einem OrganizationalItem verwendet, aber das gleiche für eine Komponente funktioniert.

Danke für Ihre Hilfe !!

2

mit versuchen,

field.prop("checked",false); 

field.is(':checked') funktioniert gut, und wenn Sie möchten, können Sie prop('checked') statt that.anyway verwenden stellen Sie sicher, Ihre jquery Version 1.6 oder höher, wenn Sie prop verwenden werden()

Verwandte Themen