2

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

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

表单内置在 html/coldfusion/js 中,存储数据的数据库是 MS Access。

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

<cfset arrayInstr = ListToArray(Form.instructions)>

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

例如,如果我尝试提交字符串“Bla bla bla bla”,一切都会好起来的,但如果字符串是“bla, bla, bla”,则只有“bla”会提交到数据库。

是否有其他方法可以处理具有相同名称的多个字段?我想避免给出唯一的名称。谢谢你,亚努斯

4

3 回答 3

6

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

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

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

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

于 2013-01-14T23:39:07.543 回答
2

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

答:不直接

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

于 2013-01-14T22:24:33.153 回答
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>
于 2013-01-16T17:18:22.610 回答