这是上一个问题的更新。我甚至不确定这是否可能,但我有一个CFOUTPUT标记,其中只有一个input标记。此输入标记相当于65个可能的复选框。我遇到的问题是试图找出在input标记的name属性中放入什么值。我需要22个唯一的名字,是静态的,不会改变的。我的代码如下:
<form action="new_processOptInfo.cfm" id="displayOptions" method="post" name="displayOptions">
<cfoutput query="categorize" group="categoryName">
<h3>#UCASE(categoryName)#</h3>
<cfoutput>
<input type="checkbox" value="#idOptions#" name="option1" /> #option#<br>
</cfoutput>
</cfoutput>
<input type="submit" value="Submit" name="submitOptions" id="submitOptions" />
</form>那么我该如何命名输入标记呢?
发布于 2014-09-15 23:19:12
作为对一条评论的回复。
简而言之,我希望自动生成的复选框具有唯一的名称。我认为在向表中插入值时,表单标记名称必须是唯一的
(这个回复太多了,不能作为评论留下。)
对于记录,字段名不必是唯一的。冷融合在逗号分隔的列表中接收重复的字段名称的值。这实际上有很大的用途。您可以有50个名为p_IDs的复选框,如果选中3个复选框,冷融合将收到选中的值(例如,如果这些值是选中的值,则为7、15、32)。
这对于cfloops来说非常有用,比如
<cfloop list="#form.p_IDs#" index="p">Product #p# selected</cfloop>.您可以命名相应的输入字段,如文本框,如下所示
<input name="desc_#dbID#" type="text">
<input type="checkbox" name="p_IDs" value="#dbID#">然后在处理页面的cfloop中使用如下代码
<cfloop list="#form.p_IDs#" index="p">
Product #p#'s description is #form["desc_#p#"]#
</cfloop>您可以将insert查询放入cfloop (或update或delete查询)。
例如,如果您想批量删除选定的行,而不是单独删除每一行,则可以使用此方法。
这种功能(几乎在每种语言中都以类似的方式工作)是checkboxes的美妙之处。你可以给它们起不同的名字,但你为什么要这样做呢?就单选按钮而言,将它们命名为不同的东西会违背它们的目的。
不过,在其他输入元素的主题上,当然要给它们命名不同的东西。
发布于 2014-09-13 05:05:39
正如@FishBelowtheIce所说,option1将作为列表被发送到动作页面,所以当我意识到这一点并遍历它时。我只需要纠正我的打字错误,它就起作用了。下面的代码就是我现在所拥有的。
<cfif IsDefined("form.submitOptions")>
<cfloop index="index" list="#options#" delimiters="," >
<cfquery name="updateInsOpTable" datasource="applewood">
INSERT INTO ins_opt_table
( address,option1,option2,option3,option4,option5,option6
, option7,option8,option9,option10,option11,option12
, option13,option14,option15,option16,option17,option18
)
VALUES (#form.address#, #options#)
</cfquery>
</cfloop>
</cfif> https://stackoverflow.com/questions/25815673
复制相似问题