2009-08-13 4 views
0

Ich entschuldige mich, wenn ich den Titel falsch formuliert habe.Mehrere Formularnamen, um Werte mit Coldfusion zu erhalten - Formular zu pdf - kann JS nicht verwenden

Ich habe eine große Tabelle mit mehreren Eingabefeldern und müssen die Werte der internen Zellen abrufen.

Ich kann die Daten, Gasmengen/Summen und die Summen, aber nicht den Rest erhalten.

Ich muss immer noch in der Lage sein, jeden anderen Eingabefeld Wert zu bekommen.

Ich bin mir nicht sicher wohin mit diesem, aber ich denke du brauchst zwei Namen.

Dieses Formular wird an ein PDF gesendet, wo ich die Werte bekomme.



Der Formularcode:

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

und Lesen der PDF-Code:

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

Ich habe Leerzeichen in diese Objekte eingefügt, weil die Namen alle Leerzeichen an verschiedenen Stellen haben, aber im Code keine.

Ich habe einen Fehler, wenn Sie die Seite im Moment senden, weil ich versuche, auf die Formularelemente zu verweisen.

Vielen Dank im Voraus für die Zeit, die Sie immer versuchen auszuhelfen.

+0

Haben Sie versucht, den FORM-Geltungsbereich CFDUMP zu setzen? – Henry

+0

Ja, aber das Problem ist, ich weiß nicht, was/wie auf den Wert jeder einzelnen Zelle zugreifen soll. In der Form für die Berechnungen habe ich split() benutzt und ein JS-Array erstellt und konnte das auch machen, aber jetzt ist es nicht mehr dasselbe. –

+1

sehen, ob dies hilft: http://www.bennadel.com/blog/803-Passing-ColdFusion-Structs-Through-Form-Submissions.htm – Henry

Antwort

0

Ich weiß nicht, ob dies genau das Problem ist, aber ...

Dieser Code-Schnipsel:

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

werden Ihnen ein Formular Variable mit einem Raum darin geben. Sie können damit wahrscheinlich nur mit HTML durchkommen, aber gültige ColdFusion-Variablennamen dürfen keine Leerzeichen enthalten. Sie können wahrscheinlich mit Klammer-Notation damit durchkommen, aber warum riskieren Sie es?

Haben Sie CFDUMP verwendet, um zu überprüfen, ob Ihr Formular die erwarteten Werte zurückgibt?

bearbeiten: Heck, fast alle Ihre Eingabeelemente werden Leerzeichen in ihren Namen wegen Leerzeichen haben. Das wird Chaos auf Ihrer Aktionsseite und Ihrem JavaScript verursachen.

Hier ist eine vorläufige Aktualisierung Ihres ersten Codeblocks. Es ist nicht perfekt, aber es ändert nichts an der Logik und sollte am Ende besser formatiertes HTML ergeben.

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

Während Sie CFML mit Ihrer HTML-Ausgabe mischen können, kann es schnell außer Kontrolle geraten. In der Regel möchten Sie mit reiner CFML so viel verarbeiten und entscheiden, dass Sie nur wenige Variablen ausgeben.

+0

Das behebt nichts, aber es macht es ein bisschen klar. –

+0

Ich dachte mir so viel. Die Art und Weise, wie Sie den Code zusammengefügt haben, erschwert die Fehlersuche, wie Sie herausgefunden haben. – ale

Verwandte Themen