2011-02-15 55 views
1

我在Dojo表单中包含了一个Dojo星级评定小部件(dojox.form.Rating),但提交时未显示。dojox.form.Rating未出现在发布数据中

<div dojoType="dojox.form.Rating" numStars="5" id="field_3177" value="3"></div> 

该文档没有提到添加名称属性,但即使我添加一个,它也没有帮助。

<div dojoType="dojox.form.Rating" name="field_3177" numStars="5" id="field_3177" value="3"></div> 

检查在Firebug呈现的HTML,似乎隐藏的输入字段没有name属性 - 这可以解释为什么它不会在发布的数据显示。

<input type="hidden" dojoattachpoint="focusNode" value="3" id="field_3177" tabindex="0"> 

提交前我应该做些什么?

+0

我解决了这个问题,通过猴子修补隐藏的输入来获得name属性。但当然,这不可能是正确的做法。它可以? – voidstate 2011-02-15 12:54:30

+0

这是猴子补丁固定它:函数(ID) \t \t { \t \t \t \t \t \t \t \t \t dojo.attr(ID, '姓名',ID); \t \t} – voidstate 2011-02-25 11:53:41

回答

2

你只需要一个名称添加到窗口小部件,即

<div dojoType="dojox.form.Rating" numStars="5" id="field_3177" name="field_3177" value="3"></div> 

这是什么特别的道场。所有输入元素必须有一个名称才能提交回服务器,请参阅http://www.w3schools.com/tags/att_input_name.asp

更新: 对不起,您没有看到您已经尝试添加名称参数。我认为这是一个表单或(更可能)评级小部件中的错误。如果您使用dijit.form.Form.getValues()通过XHR提交表单,那么您将得到包含评级小部件 - 如果您有名称。但是,如果你使用本地表单提交,那么你不会。

我在http://telliott.net/dojoExamples/dojo-ratingInFormExample.html创建了一个测试用例。您可以通过快速迭代getValues()返回的值并自己构建查询字符串来获得此功能,以用于非XHR表单提交。不理想。我怀疑应该更新评级的模板,以将名称属性放到输入节点上,而不是顶级节点上。

0

愚蠢的问题:

有你添加dojo.require( “dojox.form.Rating”);你的代码?

希望它可以帮助你。

//丹尼尔