Dojo:以编程方式设置复选框标签以在TableContainer上添加

时间:2010-06-08 23:00:15

标签: dojo dijit.layout

经过几个小时检查文档后,我有点绝望了: 基本上我需要使用一些TextBox和一些Checkbox填充TabContainer。所有的论文都整齐排列:左边的标签,右边的字段 为了完成这个,我使用我添加到TabContainer的TableContainer,创建TextFields并将它们添加到TableContainer。一切都好了。但是当涉及到一个复选框时,我找不到显示标签的技巧。 如果我: - 在创建语句中添加label-attribute说:
     var text8 = new dijit.form.CheckBox({
     id:“zuschauer_”+ i,value:“zuschauer”,label:“fritt”});
Firefox出现了“containerNode为null” - 错误

  • 尝试添加标签:没有显示任何内容(没有错误,但唉:没有标签):
    var text9 = dojo.create('< label>');
    dojo.attr(text9,“for”,“zuschauer_”+ i);
    dojo.attr(text9, “内容”, “fritt”);

  • 尝试在tablecontainer上添加div或者其他一些东西(禁用标签):Firefox出现了: 错误:未捕获的异常:[Exception ...“组件返回失败代码:0x80004003(NS_ERROR_INVALID_POINTER)[nsIDOMHTMLDivElement.appendChild]”nsresult:“0x80004003(NS_ERROR_INVALID_POINTER)”location:“JS frame :: ...

  • 同样适用于创建的TextNodes ...

那么黑客如何:
- 我会以编程方式为复选框生成标签(没有html模板可能,我已经看到了代码,创建了一个复选框,但之前在html上有一个'标签'。这没有用,因为我没有我知道在设计时我需要多少个复选框。这些复选框应在运行时完整地生成 - 我是否会以编程方式完成这个非常简单的设计,必须简单,这不是火箭的科学。我真的需要 TableContainer才能完成这项工作吗?

  • 我可以在TableContainer中创建静态文本吗?

2 个答案:

答案 0 :(得分:2)

我建议创建一个HTML字符串,然后将其设置为ContentPane的内容。如果您需要以编程方式构建表单,则可以创建自己的窗口小部件,以扩展ContentPane并在获取数据时获取数据,并生成正确的innerHTML。这最终会比试图用现有的小部件拼凑这些更简单。

答案 1 :(得分:2)

在这种情况下,您可能希望在无效的LABEL(HTML)标记内使用输入/窗口小部件。您可以在输入/窗口小部件之前或之后放置文本,并可能使用style / dir属性定位它。这将允许更多的灵活性,因为您在分析时不需要ID。只需创建一个标签标签并输入表单小部件即可。它是纯HTML,应该支持HTML 4.01。

http://www.w3.org/TR/html401/interact/forms.html#h-17.9

另见: Making checkbox and radio labels clickable