ColdFusion 10 获取元素在表单错误中未定义



我有一个 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中检查元素时,在我向其添加选项后,它们就在那里,但我想知道它是否仍然被视为空白的多选列表。我确实知道,如果我删除 multiple 属性并将表单元素视为单个下拉列表,它会显示在表单转储中,其中包含一个值,但只有第一个(或任何选定的(值。

开始认为答案可能是有一个填充选项值的隐藏字段,并让表单读取该字段。

向多选列表添加选项是不够的。他们也必须被选中。否则,该列表不被视为成功的控件,并且该字段不会传递到操作页(强调我的(

成功的控件对于提交是"有效的"。每一次成功 控件的控件名称与其当前值配对,作为 提交的表单数据集。必须定义成功的控件 在 FORM 元素中,并且必须具有控件名称。

然而:

  • 禁用的控件无法成功。
  • 如果表单包含多个提交按钮,则只有激活的提交按钮成功。
  • 所有"打开"复选框都可能成功。
  • 对于共享相同 name 属性值的单选按钮,只有"on"单选按钮可能成功。
  • 对于菜单,控件名称由 SELECT 元素提供,值由 OPTION 元素提供。只能选择的选项 成功的。如果未选择任何选项,则控件不 成功,但名称和任何值都不会提交到 提交表单时的服务器
  • 文件选择的当前值是一个或多个文件名的列表。提交表格后,每个文件的内容是 与其余表单数据一起提交。文件内容是 根据表单的内容类型进行打包。
  • 对象控件的当前值由对象的实现确定。

我怀疑表单没有强制在提交表单之前"选择"项目,这就是为什么操作页面上没有显示任何内容的原因。

听起来你需要两件事之一

要么在客户端需要它

<SELECT multiple="multiple" required id="icd9list" name="icd9list" size="2" class="pageText2" style="width:400px;">
...
</SELECT>

或者确保 ColdFusion 可以处理服务器端不存在的它。

<cfparam name="icd9list" default="">

正如所指出的,

<cfparam name="form.icd9list" default="">

将获得更紧凑的范围

你如何调用表格?您使用的是form.variable还是icd9list.variable?您不必为其提供 ID 或名称,除非页面上有多个表单。您可以nameID您的元素并像这样引用它:form.name

最新更新