11

我试图通过 jquery 使用 GUI 扩展中的文档就绪事件取消选中 Tridion 的 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'));
}); 

问题是“$j(document).ready”上的字段值似乎没有加载到 ComponentView 中。我的警报返回该字段未选中,但是当视图完成加载时复选框被选中。似乎“$j(document).ready”在加载值之前触发。有人知道我应该使用哪个事件吗?

4

2 回答 2

3

@Adrian Salazar @Sogo 感谢您的帮助,也许我应该使用更好的“prop”而不是“attr”来更改该属性,但问题是一样的,字段仍未加载,所以我无法更改该属性.

@Frank 我尝试使用 "$evt.addEventHandler($display, "start", onDisplayStarted);" 在“ComponentView”显示上,并在我的 GUI 扩展的配置上扩展该视图,但在那个事件中,字段仍然没有加载,每次我尝试访问我的复选框字段时,它都说这是“未定义”。

最后我设法取消选中订阅组件加载事件的复选框:

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

正如 Nuno 在这里解释的那样http://www.tridiondeveloper.com/inheriting-metadata-on-organizational-items#more-1073,他在 OrganizationalItem 上使用它,但对组件的工作方式相同。

谢谢你的帮助!!

于 2012-12-20T10:19:52.830 回答
2

尝试,

field.prop("checked",false);

field.is(':checked')工作正常,如果需要,您可以使用它prop('checked')来代替。无论如何,如果您要使用 prop(),请确保您的 jquery 版本是 1.6 或更高版本

于 2012-12-19T10:04:15.533 回答