coldfusion检查列表中的所有框

时间:2014-10-10 16:24:06

标签: checkbox coldfusion

我有一张带有动态表的表单。当它提交进行一些计算时,我需要经过原始检查的复选框再次进行检查。我确实带回了一个sq_claim_ids列表,其中逗号分隔了#form.number#,我无法找出使coldfusion循环遍历列表的语法,并勾选标记列中值的每一行。我知道我应该使用cfif标签,但我不知道我需要的其余部分的正确语法

<CFOUTPUT query = "qGetOpenItemsTrans">
    <TR>
        <TD ALIGN = "CENTER">
          <input type="checkbox" name = "chkbx" id='#ID#' value="#seq_claim_id#"     onClick="goFurther(this)" unchecked = 0   >
        </TD>
        <TD ALIGN = "CENTER">#Inventory_Date#</TD>
        <TD ALIGN = "CENTER">#seq_claim_id#</TD>
        <TD ALIGN = "CENTER">#Month_Closed#</TD>
        <TD ALIGN = "CENTER">#Amount_Rcvd_by_FRG#</TD>
        <TD ALIGN = "CENTER">#Commission_Amt#</TD>
        <TD ALIGN = "CENTER">#Net_Recovery#</TD>
    </TR>
</CFOUTPUT>

<cfif (form.number) NEQ "">
<cfloop index="i" list="#form.number#" delimiters=",">
</cfif>

3 个答案:

答案 0 :(得分:3)

尝试这个概念。

<cfset lang_list = "C,C++,Java">
<cfoutput >

<form method="post">
Favorite Programing Language:
<cfloop list="#lang_list#" index="i" >
    <cfif structKeyExists(FORM,"fav") and listFind(FORM.fav,i)>
        <cfset isChecked = "checked">
    <cfelse>
        <cfset isChecked = "">  
    </cfif> 
    <input type="checkbox" name="fav" value="#i#" #isChecked#>#i#   
</cfloop>   
<input type="submit" value="Submit">
</form>

</cfoutput>

答案 1 :(得分:0)

这对我有用。由于表已经循环,我在它周围使用了cfif标签

<cfset ischecked = "">
<cfif (form.number) NEQ "">
    <CFOUTPUT query = "qGetOpenItemsTrans">
           <cfif #ListFind(#form.number#, #qGetOpenItemsTrans.seq_claim_id#)# NEQ 0>
           <cfset isChecked = "checked">
           </cfif>
    <TR>
        <TD ALIGN = "CENTER">
          <input type="checkbox" name = "chkbx" id='#ID#' value="#seq_claim_id#"     onClick="goFurther(this)" unchecked = 0 #ischecked#   >
        </TD>
        <TD ALIGN = "CENTER">#Inventory_Date#</TD>
        <TD ALIGN = "CENTER">#seq_claim_id#</TD>
        <TD ALIGN = "CENTER">#Month_Closed#</TD>
        <TD ALIGN = "CENTER">#Amount_Rcvd_by_FRG#</TD>
        <TD ALIGN = "CENTER">#Commission_Amt#</TD>
        <TD ALIGN = "CENTER">#Net_Recovery#</TD>
    </TR>
    <cfset ischecked = "">
</CFOUTPUT>



<cfelse>
<CFOUTPUT query = "qGetOpenItemsTrans">
    <TR>
        <TD ALIGN = "CENTER">
          <input type="checkbox" name = "chkbx" id='#ID#' value="#seq_claim_id#"     onClick="goFurther(this)" unchecked = 0   >
        </TD>
        <TD ALIGN = "CENTER">#Inventory_Date#</TD>
        <TD ALIGN = "CENTER">#seq_claim_id#</TD>
        <TD ALIGN = "CENTER">#Month_Closed#</TD>
        <TD ALIGN = "CENTER">#Amount_Rcvd_by_FRG#</TD>
        <TD ALIGN = "CENTER">#Commission_Amt#</TD>
        <TD ALIGN = "CENTER">#Net_Recovery#</TD>
    </TR>
</CFOUTPUT>
</cfif>

答案 2 :(得分:0)

展开Deepak's answer

首先,正如Leigh所说,使用ListFind()而不是ListContains()。这很重要,而不仅仅是语义。 #ListContains("42,17,32",4)#将匹配并导致选中复选框。 #ListFind("42,17,32",4)#将(正确地)不匹配,因为没有单个元素等于4.这里的潜力可能是灾难性的,保持不变。如果用户没有意识到错误地检查了盒子,则记录可能会被不可撤销地更改或删除。

其次,Deepak的答案非常好,但这是使用内联if语句的绝佳机会。

使用Cold Fusion 9或Railo 3.1+,您可以使用像这样的内联if语句

<input type="checkbox" name="fav" value="#i#"
  #(structKeyExists(FORM,"fav") and listfind(FORM.fav,i) ? "checked" : "")#>

以上格式的内联Ifs为#(condition ? expression-if-true : expression-if-false)#

对于其中任何一个版本的旧版本,您可以使用Iif函数,尽管IIf附带了一点点耻辱。

<input type="checkbox" name="fav" value="3"
  #IIf(structKeyExists(FORM,"fav") and listfind(FORM.fav,i),DE("checked"),"")#>

Iif语法为#iif(condition, expression-if-true, expression-if-false)#。但是,传递一个字符串,如上面的“checked”,你必须将其包装在DE()中,否则Cold Fusion(和Railo)将查找一个名为的变量

如果你可以使用CF9的内联ifs而不是IIf,那么除非向后兼容是一个问题,否则这样做。

上述两种方法与Deepak的回答具有相同的目的,Leigh的ListFind()更正,并且所有方法都与

相同
<input type="checkbox" name="fav" value="3"
   <cfif (structKeyExists(FORM,"fav") and listfind(FORM.fav,i))>checked</cfif>>

除了添加一些视觉效果之外,这段代码运行良好,但许多html编辑器自动格式化功能都可以做到这一点,比如

<input type="checkbox" name="fav" value="3"
  <cfif (structKeyExists(FORM,"fav") and listfind(FORM.fav,i))>
    checked
  </cfif>
>

或者完全破坏代码。