提交表单的ListToArray

时间:2013-01-14 22:18:24

标签: coldfusion

我有一个网页表单,其中包含多个具有相同名称的元素,例如:

<textarea name="instructions"><cfoutput>#struct.instructions# </cfoutput> </textarea>

表单是用html / coldfusion / js构建的,用于存储数据的数据库是MS Access。

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

<cfset arrayInstr = ListToArray(Form.instructions)>

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

例如,如果我尝试提交字符串&#34; Bla bla bla bla&#34;一切都会好的,但如果字符串将是&#34; bla,bla,bla&#34;只有&#34; bla&#34;将被提交到数据库。

是否有其他方法可以处理多个具有相同名称的字段? 我想避免给出独特的名字。 谢谢, 雅努什

3 个答案:

答案 0 :(得分:6)

如果你给表单字段名称如instructions1,instructions2,instructions3,那么很容易在循环中执行你需要的任何逻辑。

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

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

我认为这比使用JavaScript在表单字段中添加分隔符要容易得多。

答案 1 :(得分:2)

问:还有其他方法可以处理多个具有相同名称的字段吗?

答:不直接

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

答案 2 :(得分:0)

您可以使用getHTTPRequestData函数创建单个表单字段的数组。

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