0

我已经使用 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>
4

3 回答 3

2

不提交禁用的字段。最简单的解决方案是将其更改为只读。如果您确定将其禁用,您可以创建一个隐藏字段,并使用其中的值进行更新,但我强烈建议仅使用 readonly,然后尝试根据需要对其进行样式设置。

于 2012-04-12T20:06:31.237 回答
0

这是因为第二个选择被禁用,提交表单时没有发送数据。

您可以尝试将其设为只读而不是禁用。

于 2012-04-12T20:07:36.007 回答
0

这是标准的浏览器行为。在将值添加到禁用的选择列表时,您还可以将其添加到隐藏的输入字段,然后在发布的请求中访问它。

于 2012-04-12T20:08:40.733 回答