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

表单错误中未定义ColdFusion 10获取元素,coldfusion,multi-select,coldfusion-10,cfml,Coldfusion,Multi Select,Coldfusion 10,Cfml,我有一个ColdFusion 10表单,在其中添加了一个新的多选列表 <SELECT multiple="multiple" id="icd9list" name="icd9list" size="2" class="pageText2" style="width:400px;"> </SELECT> 我还尝试使用custform.icd9list,但遇到了同样的问题: 元素ICD9LIST在CUSTFORM中未定义 这个页面是一

我有一个ColdFusion 10表单,在其中添加了一个新的多选列表

<SELECT multiple="multiple" id="icd9list" 
    name="icd9list" 
    size="2" 
    class="pageText2" 
    style="width:400px;">
</SELECT>
我还尝试使用
custform.icd9list
,但遇到了同样的问题:

元素ICD9LIST在CUSTFORM中未定义

这个页面是一些非常遗留的代码,我们不能返回并重构太多。我唯一想到的是,当页面第一次加载时,multiple-select选项是空的,然后我们通过javascript从一个弹出窗口向它添加选项。当我在Chrome中检查元素时,在我添加了选项之后,它们就在那里了,但是我想知道它是否仍然被视为一个空白的多选列表。我知道如果我删除multiple属性并将表单元素视为一个下拉列表,它将在表单转储中显示一个值,但仅显示第一个(或任何选定的)值


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

您如何调用表单?您使用的是
form.variable
还是
icd9list.variable
?除非页面上有多个表单,否则不必为其指定ID或名称。您只需
name
ID
您的元素,并像这样引用它:
form.name

向多选列表中添加选项是不够的。他们也必须被选中。否则,该列表将不被视为一个字段,并且该字段将不会传递到操作页面(emphasis mine)

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

然而:

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

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

听起来你需要两件事中的一件

或者在客户端需要它

<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="">


将得到更窄的范围

我将其引用为updform.cfm(表单操作文件)中的form.icd9list,这不是访问表单变量的方式。您基本上是说form.form,因为您将表单命名为icd9list。把你的名字和身份证从表格上去掉。然后根据需要命名和标识输入。示例:您希望将其引用为form.name,并且希望您的cfparam为name=“form.name”,并且每次调用它时,都需要将其指定为form.name,除非您将form.name设置为新变量名。no。。该表单实际上被命名为“custform”(请参阅初始帖子中的cfform标记)。我将尝试查看custform.icd9list是否有效。icd9list是表单元素名try custform.icd9list,但是如果它不起作用,我想看一下您的代码,这样我就可以更容易地告诉您出了什么问题。您真的选择了什么吗?将项目添加到多选中并不意味着什么,您仍然需要实际选择项目。以前我在提交时就这样做了,只需选择所有已添加的项目。@haxtbh即使您没有选择任何内容,select form元素是否仍然存在?您是否在此页面上使用其他JS库?如果从multiple中删除属性值并只键入
multiple
,会发生什么情况?@Shawn No,有点像复选框、单选按钮或任何禁用的表单项。如果它们未被勾选/激活等,则不会在表单范围内通过。“尝试使用custform.icd9list”FWIW,您永远不会使用
cfform
的名称。在CF中,POST变量总是提交到名为
表单
的特殊系统作用域(无论cfform/FORM的名称如何)。更好的是,两者都使用;-)@jjasper0729-还应确保在cfparam中包含范围,即

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