使用Coldfusion获取值的多个表单名称 - 形式为pdf - 不能使用JS

时间:2009-08-13 19:12:21

标签: forms coldfusion object

如果我说错了标题,我道歉。

我有一个包含多个输入框的大表,需要获取内部单元格的值。

我能够获得日期,燃气金额/总金额和总金额,但不能获得其余的金额。

我仍然需要能够获得所有其他输入框的值。

我不太确定该去哪里,但我认为你需要两个名字。

此表格提交给pdf,我在其中获取值。



表单代码:

<cfloop from="1" to="#ArrayLen(labels)#" index="r">
    <tr>
        <td class="labels"><cfif ArrayIsDefined(labels,r) AND labels[r] NEQ "Open1">
                <cfif labels[r] EQ "Open">
                    <input type="text" name="descript#r#" class="description" value="Enter text here" style="width:auto;" />
                    <cfelse>
                    #labels[r]#
                </cfif>
            </cfif></td>
        <cfloop from="1" to="7" index="i">
            <td id="Day#i#" class="row#r# col#i#"><cfif r EQ 1>
                    #Left(DayOfWeekAsString(i),3)#
                    <cfelse>
                    <cfif r EQ 2>
                        <input type="text" class="date-mask" name="dates#i#" />
                        <cfelse>
                        <input type="text" 
                                <cfif labels[r] EQ "Personal Car: Mileage ##"> id="gasamount#i#" <cfelseif labels[r] EQ "Personal Car: Mileage $">id="gasmoney#i#"  </cfif><cfif labels[r] EQ "Daily Totals">id="dailytotals#i#"</cfif>
                                 class="<cfif labels[r] EQ "Personal Car: Mileage ##">gasamount<cfelse><cfif labels[r] NEQ "Daily Totals">C#i#</cfif></cfif>
                                 <cfif labels[r] EQ "Personal Car: Mileage $">gasmoney<cfelse>calc R#r#</cfif>
                                 <cfif labels[r] EQ "Daily Totals">ttlC#i#</cfif>" 
                                 <cfif labels[r] EQ "Daily Totals" OR labels[r] EQ "Personal Car: Mileage $" OR labels[r] EQ "Open1">readonly="readonly"</cfif> 
                                 name="<cfif labels[r] NEQ "Personal Car: Mileage ##" AND labels[r] NEQ "Personal Car: Mileage $" AND labels[r] NEQ "Dates:" AND labels[r] NEQ "Open1" AND labels[r] NEQ "Daily Totals">R#r# C#i#</cfif>
                                 <cfif labels[r] EQ "Personal Car: Mileage ##">gasamt#i#</cfif>
                                 <cfif labels[r] EQ "Daily Totals">celltotals#i#</cfif>
                                 <cfif labels[r] EQ "Personal Car: Mileage $">gastot#i#</cfif>"
                                   />
                    </cfif>
                </cfif></td>
        </cfloop>
        <td class="totals"><cfif r EQ 1>
                Total
                <cfelse>
                <input type="text" id="totals" class="ttlR#r#" name="totals#r#" readonly="readonly" />
            </cfif></td>
    </tr>
</cfloop>

PDF代码:

<cfloop from="1" to="#ArrayLen(labels)#" index="r">
    <tr>
        <td class="labels"><cfif ArrayIsDefined(labels,r) AND labels[r] NEQ "Open1">
                <cfif labels[r] EQ "Open">
                    <span>#form['descript' & r]#</span>
                    <cfelse>
                    #labels[r]#
                </cfif>
            </cfif></td>
        <cfloop from="1" to="7" index="i">
            <td id="Day" class="row#r# col#i#"><cfif r EQ 1>
                    #Left(DayOfWeekAsString(i),3)#
                    <cfelse>
                    <cfif labels[r] EQ "Date:">
                        <span style="width:60px;">#form['dates' & i]#</span>
                        <cfelse>
                        <span style="width:60px;">
                        <cfif labels[r] EQ "Personal Car: Mileage ##">
                            #form[" " & 'gasamt' & i & " "]#
                        </cfif>
                        <cfif labels[r] EQ "Personal Car: Mileage $">
                            #form[" " & 'gastot' & i]#
                        </cfif>
                        <cfif labels[r] EQ "Daily Totals">
                            #form[" " & 'celltotals' & i & " "]#
                        </cfif>
                        <cfif labels[r] NEQ "Personal Car: Mileage ##" AND labels[r] NEQ "Personal Car: Mileage ##" AND labels[r] NEQ "Dates:" AND labels[r] NEQ "Open1" AND labels[r] NEQ "Daily Totals">
                            #form['R' & r & " "]#
                        </cfif>
                    </cfif>
                </cfif>
                </span></td>
        </cfloop>
        <td class="totals" style="width: 60px;"><cfif r EQ 1>
                Total
                <cfelse>
                <span style="text-align:right;">#form['R' & r & " " & 'C' & i & " "]#</span>
            </cfif></td>
    </tr>
</cfloop>

我在这些对象中添加了空格,因为名称似乎在不同的地方都有空格,但代码中没有空格。

我提交页面时出现错误,因为我正在尝试引用表单元素。

提前感谢您花时间寻求帮助。

1 个答案:

答案 0 :(得分:0)

我不知道这是不是问题,但是......

这段代码:

<cfif labels[r] NEQ "Personal Car: Mileage ##" 
    AND labels[r] NEQ "Personal Car: Mileage $" 
    AND labels[r] NEQ "Dates:" 
    AND labels[r] NEQ "Open1" 
    AND labels[r] NEQ "Daily Totals">R#r# C#i#</cfif>

将为您提供一个带有空格的表单变量。你可以用HTML来逃避它,但有效的ColdFusion变量名不能包含空格。您可以使用括号表示法来解决它,但为什么要冒险呢?

您是否使用CFDUMP检查表单是否返回了您期望的值?

编辑:哎呀,几乎所有的输入元素都因为空格而在名称中有空格。这会对您的操作页面和JavaScript造成严重破坏。

这是您第一个代码块的临时更新。它并不完美,但它不会改变逻辑,最终会让你更好地格式化HTML。

<cfloop from="1" to="#ArrayLen(labels)#" index="r">
<tr>
    <td class="labels">
        <cfif ArrayIsDefined(labels,r) AND labels[r] NEQ "Open1">
            <cfif labels[r] EQ "Open">
                <input type="text" name="descript#r#" class="description" value="Enter text here" style="width:auto;" />
            <cfelse>
                #labels[r]#
            </cfif>
        </cfif>
    </td>
    <cfloop from="1" to="7" index="i">
        <td id="Day#i#" class="row#r# col#i#">
            <cfif r EQ 1>
                #Left(DayOfWeekAsString(i),3)#
            <cfelse>
                <cfif r EQ 2>
                    <input type="text" class="date-mask" name="dates#i#" />
                <cfelse>
                    <cfset tempid="" />
                    <cfif labels[r] EQ "Personal Car: Mileage ##"> 
                        <cfset tempid="gasamount#i#" />
                    <cfelseif labels[r] EQ "Personal Car: Mileage $">
                        <cfset tempid="gasmoney#i#" />
                    <cfelseif labels[r] EQ "Daily Totals">
                        <cfset tempid="dailytotals#i#" />
                    </cfif>

                    <cfset tempclass="" />
                    <cfif labels[r] EQ "Personal Car: Mileage ##">
                        <cfset tempclass="gasamount" />
                    <cfelse>
                        <cfif labels[r] NEQ "Daily Totals">
                            <cfset tempclass="C#i#" />
                        </cfif>
                    </cfif>
                    <cfif labels[r] EQ "Personal Car: Mileage $">
                        <cfset tempclass="gasmoney" />
                    <cfelse>
                        <cfset tempclass="calc R#r#" />
                    </cfif>
                    <cfif labels[r] EQ "Daily Totals">
                        <cfset tempclass="ttlC#i#" />
                    </cfif>

                    <cfset tempreadonly="" />
                    <cfif labels[r] EQ "Daily Totals" OR labels[r] EQ "Personal Car: Mileage $" OR labels[r] EQ "Open1">
                        <cfset tempreadonly="readonly=""readonly""" />
                    </cfif> 

                    <cfset tempname="" />
                    <cfif labels[r] NEQ "Personal Car: Mileage ##" AND labels[r] NEQ "Personal Car: Mileage $" AND labels[r] NEQ "Dates:" AND labels[r] NEQ "Open1" AND labels[r] NEQ "Daily Totals">
                        <cfset tempname="R#r# C#i#" />
                    </cfif>
                    <cfif labels[r] EQ "Personal Car: Mileage ##">
                        <cfset tempname="gasamt#i#" />
                    </cfif>
                    <cfif labels[r] EQ "Daily Totals">
                        <cfset tempname="celltotals#i#" />
                    </cfif>
                    <cfif labels[r] EQ "Personal Car: Mileage $">
                        <cfset tempname="gastot#i#" />
                    </cfif>
                    <input type="text" id="#tempid#" class="#tempclass#" #tempreadonly# name="#tempname#" />
                </cfif>
            </cfif>
        </td>
    </cfloop>
    <td class="totals">
        <cfif r EQ 1>
            Total
        <cfelse>
            <input type="text" id="totals" class="ttlR#r#" name="totals#r#" readonly="readonly" />
        </cfif>
    </td>
</tr>
</cfloop>

虽然您可以将CFML与HTML输出混合使用,但它很快就会失控。作为一般规则,您希望使用纯CFML进行尽可能多的处理和决策,然后只输出一些变量。