Coldfusion 已提交表单的列表阵列

Coldfusion 已提交表单的列表阵列,coldfusion,Coldfusion,我有一个包含多个同名元素的web表单,例如: <textarea name="instructions"><cfoutput>#struct.instructions# </cfoutput> </textarea> #结构说明# 表单是在html/coldfusion/js中构建的,存储数据的数据库是MS Access 在我用来处理表单提交的脚本中,我使用ListToArray方法获取具有给定名称的所有字段 <cfset arrayIn

我有一个包含多个同名元素的web表单,例如:

<textarea name="instructions"><cfoutput>#struct.instructions# </cfoutput> </textarea>
#结构说明#
表单是在html/coldfusion/js中构建的,存储数据的数据库是MS Access

在我用来处理表单提交的脚本中,我使用ListToArray方法获取具有给定名称的所有字段

<cfset arrayInstr = ListToArray(Form.instructions)>

好的,这就是问题所在。如果提交的文本包含comas ListToArray,则会将其解释为多个元素

例如,如果我尝试提交一个字符串“Bla-Bla-Bla-Bla”,一切都会很好,但如果字符串是“Bla,Bla,Bla”,则只有“Bla”会提交到数据库

是否有其他方法处理同名的多个字段? 我希望避免给出唯一的名称。 非常感谢。
Janusz

问:有没有其他方法可以处理多个同名字段

A:不直接


Javascript将这些项视为一个数组。您需要做的是让Javascript遍历所有值,创建一个具有不同分隔符的字符串,并将其放入隐藏字段中。不同的
和逗号之间的区别将保持不变。

如果您给出表单字段名称,如指令1、指令2、指令3,则很容易在循环中执行所需的任何逻辑

for( var i = 1; i <=3; i++ ){
    var theValue = form["instructions" & i];

    //do whatever you need to do with theValue//
}

for(var i=1;i您可以使用函数创建单个表单字段的数组

<cfset Variables.RequestData = getHTTPRequestData()>
<cfset Variables.RequestContent = Variables.RequestData.Content>

<cfset Variables.FormScope = []>
<cfloop index="Variables.CurrentItem" list="#Variables.RequestContent#" delimiters="&">
    <cfset ArrayAppend(Variables.FormScope, URLDecode(ListLast(Variables.CurrentItem, "=")))>
</cfloop>


James给了你一个很好的答案。我想知道为什么你如此反对使用唯一名称。这似乎是一个更简单的解决方案,而不是检查每个唯一字段是否存在,我使用for循环一次处理所有字段。这样,我就可以在不更改处理f的脚本的情况下向表单添加更多字段orm.Cool。使用Javascript很容易,但是你能在Cold Fusion中以类似的方式动态创建变量名称吗?是的。使用与上面相同的语法,但在右侧指定一个值,即
表单[“指令”&i]=“某物”;
(编辑)顺便说一句,我支持上面的方法。比担心分隔符容易得多。有时候,最好的解决方案不一定能直接回答所问的问题。我能想到的唯一原因可能是OP不需要唯一的名称,因为他们可能不明白将这些值作为唯一形式f管理有多么容易雅思。我只是想说明这是多么容易。回答他的问题?也许不是。解决导致他的问题的根本问题?当然。我认为解决他的问题最简单和最好的方法是使用唯一的字段名。对于任何可能对我上面漫无边际的评论感到疑惑的人。某人(不想说是谁)已经发布了一条评论(该评论已被删除),我提出的解决方案没有回答问题,因为OP提到他不希望有唯一的字段名。