我用javascript动态创建了选项元素。我双击一个选择字段中的选项以将其传输到第二个禁用的多个选择字段。这很好用。当我提交包含新信息的表单时,会出现问题。第二个选择字段未传递给PHP。我假设它认为它是空的,但我添加的每个选项都默认选中,我在那里看到它们。我一直在寻找解决方案,但我没有运气。我能找到的一切都说最有可能是浏览器不兼容,或者元素没有被添加到表单中。如果它是一个浏览器不兼容问题,我已经在所有主流浏览器上尝试了相同的结果,所以我想知道哪一个我缺少(FF,Chrome,IE)。至于没有添加到表单中,我看不出那是怎么可能的。 select元素已经存在于表单中,我只是在其中添加新选项。我错过了什么,或者这是不可能的?
<script type="text/javascript" language="JavaScript">
function addModule(value, title) {
modules = document.getElementById('modules');
modules.options[modules.options.length] = new Option(title, value, true);
}
</script>
<form name="addModules" method="POST" action="submit.php">
<select name="moduleList" size="20" ondblclick="addModule(this.options[this.selectedIndex].text, this.value);">
<?php //dynamically created options from PHP ?>
</select>
<select id="modules" name="modules[]" multiple="multiple" size="20" DISABLED></select>
<input type="submit" value="Add Modules" />
</form>
答案 0 :(得分:2)
未提交已停用的字段。最简单的解决方案是将其更改为只读。如果您决定将其设置为已禁用,则可以创建一个使用其值更新的隐藏字段,但我强烈建议您只使用readonly然后尝试根据需要设置样式。
答案 1 :(得分:0)
这是因为第二个选择被禁用,在提交表单时不会发送数据。
您可以尝试将其设为只读而非禁用。
答案 2 :(得分:0)
这是标准的浏览器行为。将值添加到禁用的选择列表时,您还可以将其添加到隐藏的输入字段,然后在发布的请求中访问它。