你好,我有一个表单选择元素,如下所示:
<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时,我得到:
阵列("颜色"=>"红色")
应该在哪里:
阵列("颜色"=>"1")
我有点困惑,这会和标签属性有关吗?
----编辑----
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"}},...
您的代码看起来是有效的,但标签可能会干扰某些内容。由于你不需要它(你使用的文本与选项标签之间的文本相同),我建议你删除它。
试试这个方法:
<select name="color" id="color">
<option value="1">Red</option>
<option value="2">Green</option>
<option value="3">Blue</option>
</select>
有关label
属性的更多信息。
定义和用法
label属性指定选项的较短版本。
较短的版本将显示在下拉列表中。
尽管问题中没有提供信息供任何人回答,但问题的解决方案是:
表单元素在Zend Framework中创建为Zend_Dojo_form_element_ComboBox,我在文档中发现了以下信息
组合框返回标签值,而不是选项值可能导致期望值的脱节。因此,组合框不要自动注册InArray验证器(尽管FilteringSelects做)。
将元素更改为Zend_Dojo_Form_element_FilteringSelect,问题得到了解决,现在工作正常。
感谢@devdRew提出了正确的问题,让我想到了dojo/dijit改变发布内容的价值。