您好我有一个表单选择元素如下:
<select name="color" id="color">
<option value="1" label="Red">Red</option>
<option value="2" label="Green">Green</option>
<option value="3" label="Blue">Blue</option>
</select>
当我提交表单并检查$ _POST时,我得到:
array('color'=&gt;'Red')
它应该在哪里:
array('color'=&gt;'1')
我有点困惑,它是否与label属性有关?
----编辑----
dojo.addOnLoad(function() {
dojo.forEach(zendDijits, function(info) {
var n = dojo.byId(info.id);
if (null != n) {
dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
}
});
dojo.parser.parse();
});
var zendDijits = [{"id":"color","params":{"autocomplete":"true","required":"true","dojoType":"dijit.form.ComboBox"}},...
答案 0 :(得分:1)
您的代码似乎有效,但标签可能会干扰某些内容。由于您不需要它(您使用与选项标签之间的文本相同的文本),我建议您将其删除。
以这种方式尝试:
<select name="color" id="color">
<option value="1">Red</option>
<option value="2">Green</option>
<option value="3">Blue</option>
</select>
一些more info on the label
attribute。
定义和用法
label属性指定选项的较短版本。
较短的版本将显示在下拉列表中。
答案 1 :(得分:0)
虽然问题中没有提供任何人回答的信息,但问题的解决方案是:
表单元素在Zend Framework中作为Zend_Dojo_Form_Element_ComboBox创建,我在文档中找到了以下信息:
ComboBoxes返回标签值,而不是选项值 会导致期望的脱节。出于这个原因,ComboBoxes 不要自动注册InArray验证器(尽管FilteringSelects 做)。
将元素更改为Zend_Dojo_Form_Element_FilteringSelect,问题已解决,现在工作正常。
感谢@devdRew,他提出正确的问题让我想到了dojo / dijit改变发布内容的价值。