【发布时间】:2018-08-27 17:47:24
【问题描述】:
我有一个 ColdFusion 10 表单,我正在向其中添加一个新的多选列表
<SELECT multiple="multiple" id="icd9list"
name="icd9list"
size="2"
class="pageText2"
style="width:400px;">
</SELECT>
它正确显示在表单上,我可以使用 JavaScript 将项目添加到其中,但是当我去处理表单时,表单操作页面出现以下错误:
元素 ICD9LIST 在 FORM 中未定义。
我在初始表单页面以及出现错误的表单操作页面上添加了 cfparam 标记。
我一生都无法弄清楚为什么它没有将表单元素传递给操作页面。方法是post,所以应该是捡起来的。页面上的所有其他表单元素都被很好地拾取。
<cfform action="updform.cfm" name="custform" method="POST">
我也尝试使用custform.icd9list 并遇到了同样的问题:
元素 ICD9LIST 在 CUSTFORM 中未定义。
这个页面是一些非常遗留的代码,我们不能真正回去重构太多。我唯一在想的是,当页面第一次加载时,多选选项是空白的,然后我们在事后通过 javascript 从弹出窗口中添加选项。当我在 Chrome 中检查元素时,在我添加了选项之后,它们就在那里,但我想知道它是否仍被视为空白的多选列表。我确实知道,如果我删除多个属性并将表单元素视为单个下拉列表,它会在表单转储中显示一个值,但只有第一个(或任何选择的)值。
开始认为答案可能是设置一个填充了选项值的隐藏字段,然后让表单读取它。
【问题讨论】:
-
你真的在选择什么吗?将项目添加到多项选择并不意味着什么,您仍然需要实际选择项目。过去我在提交时这样做,只需选择所有已添加的项目即可。
-
@haxtbh 即使你不选择任何东西,SELECT 表单元素是否仍然存在?
-
您是否在此页面上使用任何其他 JS 库?如果您从多个中删除属性值并仅键入
multiple,会发生什么情况? -
@Shawn 不,有点像复选框、单选按钮或任何禁用的表单项。如果它们没有被勾选/激活等,它们就不会在表单范围内传递。
-
“尝试使用 custform.icd9list” FWIW,您从不使用
cfform的名称。在 CF 中,POST 变量总是提交到名为FORM的特殊系统作用域(无论 cfform/form 的名称如何)。
标签: coldfusion multi-select coldfusion-10 cfml