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

时间:2018-08-27 17:47:24

标签: coldfusion multi-select coldfusion-10 cfml

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

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

它可以正确显示在表单上,​​并且可以使用JavaScript向其中添加项目,但是当我处理表单时,表单操作页面出现以下错误:

  

元素ICD9LIST在FORM中未定义。

我已经在初始表单页面以及出现错误的表单操作页面上添加了cfparam标记。

我一辈子都无法弄清楚为什么它没有将form元素传递到操作页面。该方法是post,因此应该将其提取。页面上的所有其他表单元素都可以正常使用。

<cfform action="updform.cfm" name="custform" method="POST">

我还尝试使用custform.icd9list并遇到相同的问题:

  

ICD9LIST元素在CUSTFORM中未定义。

此页面是一些非常旧的代码,我们无法真正回过头来重构太多。我唯一想的是,当页面首次加载时,多选选项为空白,然后我们通过事件后的弹出窗口通过javascript向其中添加选项。当我检查Chrome中的元素时,在向其中添加选项之后,它们就在那里了,但是我想知道它是否仍被视为空白的多选列表。我确实知道,如果我删除了multiple属性,并将form元素视为一个下拉列表,它将在表单转储中显示为一个值,但只有第一个(或所选的任何值)。

开始认为答案可能是隐藏字段填充了选项值,然后让表单读取该字段。

3 个答案:

答案 0 :(得分:4)

将选项添加到多个选择列表中还不够。也必须选择它们。否则,该列表不会被视为successful control,并且字段不会会传递到操作页面(强调我的信息)

  

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

     

但是:

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

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

答案 1 :(得分:2)

听起来您需要两件事之一

在客户端都需要

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

范围将会更紧密

答案 2 :(得分:0)

您如何致电表格?您使用的是form.variable还是icd9list.variable?除非页面上有多种形式,否则您不必给它提供ID或名称。您可以仅nameID您的元素,并像这样引用它:form.name