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

フォーム フィールドに instructions1、instructions2、instructions3 などの名前を付けると、ループ内で必要なロジックを簡単に実行できます。

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

Q: 同じ名前の複数のフィールドを処理する他の方法はありますか?

A: 直接ではありません

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 に答える