ColdFusion中的HTML表单错误:“元素__在FORM中未定义。”

时间:2014-01-10 00:01:20

标签: html forms coldfusion coldfusion-8

我正在尝试提交一个html表单,其中包含一周中几天的复选框。检查它们时,我为该复选框传递值1。要处理未选中的框,我在表单操作页面的CFPARAM标记中传递值0。

我接受这些表单输入并将它们添加到我传递给webservice的结构中

表格代码(opentroubleticket.cfm):

<form action = "opentroubleticketaction.cfm" method="post" id="myForm" name="myForm">
    <cfoutput><input type="checkbox" name="Loc_Mon" value="1"> MON </cfoutput>
    <cfoutput><input type="checkbox" name="Loc_Tue" value="1"> TUE</cfoutput>
    <cfoutput><input type="checkbox" name="Loc_Wed" value="1"> WED </cfoutput>
    <cfoutput><input type="checkbox" name="Loc_Thu" value="1"> THU </cfoutput>
    <cfoutput><input type="checkbox" name="Loc_Fri" value="1" > FRI</cfoutput>
    <cfoutput><input type="checkbox" name="Loc_Sat" value="1" > SAT</cfoutput>
    <cfoutput><input type="checkbox" name="Loc_Sun" value="1" > SUN</cfoutput> 
    <input type="submit" name="submit" value="SUBMIT" class="beef">
</form> 


操作代码(opentroubleticketaction.cfm):

<cfparam name="Loc_Mon" default="0">
<cfparam name="Loc_Tues" default="0">
<cfparam name="Loc_Wed" default="0">
<cfparam name="Loc_Thu" default="0">
<cfparam name="Loc_Fri" default="0">
<cfparam name="Loc_Sat" default="0">
<cfparam name="Loc_Sun" default="0">

<!---some other stuff--->

<cfscript>
    BodyRT = structNew();
    BodyRT.RepairRequest = structNew();
    BodyRT.RepairRequest['Loc_Mon']=form.Loc_Mon;
    BodyRT.RepairRequest['Loc_Tue']=form.Loc_Tue;
    BodyRT.RepairRequest['Loc_Wed']=form.Loc_Wed;
    BodyRT.RepairRequest['Loc_Thu']=form.Loc_Thu;
    BodyRT.RepairRequest['Loc_Fri']=form.Loc_Fri;
    BodyRT.RepairRequest['Loc_Sat']=form.Loc_Sat;
    BodyRT.RepairRequest['Loc_Sun']=form.Loc_Sun;
</cfscript>

<!---some other stuff--->

当我提交带有所有复选框的表单时,它会通过并正确传递给webservice,每个输入值为1。当我提交带有未选中框的表单时,我收到此错误:
Element LOC_MON is undefined in FORM
即使我使用CFPARAM标记设置了默认值,为什么元素未定义?

如果我选中MON框,则显示Element LOC_TUE is undefined in FORM,依此类推。

1 个答案:

答案 0 :(得分:3)

您看到的是HTML表单中复选框的默认行为。仅在选中框时才传递值。取消选中后,表单字段不会传递。

Reference

正如评论中所提到的,您的<cfparam>标记未捕获此条件的原因是因为您没有确定它们的范围。这应该可以解决你的问题。

我在评论中也注意到你说范围没有解决问题。那是因为你的代码中也有拼写错误(或者至少是错误匹配)。在您的<cfparam>星期二变量标记中,您将名称设置为Loc_Tues(注意结尾处的's')。稍后在您的代码中,您指的是Loc_Tue(没有's')。因此,在form.标记中添加<cfparam>范围并修复该不匹配,然后您应该好好去。

<cfparam name="form.Loc_Mon" default="0">
<cfparam name="form.Loc_Tue" default="0">
<cfparam name="form.Loc_Wed" default="0">
<cfparam name="form.Loc_Thu" default="0">
<cfparam name="form.Loc_Fri" default="0">
<cfparam name="form.Loc_Sat" default="0">
<cfparam name="form.Loc_Sun" default="0">