0

返信してくれてありがとう。解決策が見つかりました:FORMの代わりにDIVを使用し、その中のすべてのINPUTをシリアル化しました。

現在のフィドルコード:http: //jsfiddle.net/MyBZC/

フォーム:

<form id="sfn" name="sfn">
       <input name="datasource" type="hidden" value="TDA">
       <input name="staticfields" type="hidden" value="">
       <input name="returnfield" type="hidden" value="Complaintinformation_ID">
       <input  name="returnid" type="hidden" value="Complaintinformation_ID">
    eCI ID:<input  class="nostyle" type="text" name="id" id="Complaintinformation_ID" style="width:150px;"/> 
    Complaint number: <input  class="nostyle" type="text" name="ecin" id="ecin" style="width:150px;"/>
</form>

JQuery:

var ds= $("#sfn").serializeArray();
alert(ds);

dsに警告すると、空の警告ボックスが表示されます。このhtmlフォームが実際には別のフォームタグ内にあるため、serializeArray()が機能していない可能性がありますか?

編集されていない実際の(より長い)html出力は次のとおりです。

    <form id="searchform_srcSupplier" name="searchform_srcSupplier">
        <input name="datasource" type="hidden" value="DEACSQL10_BPCS_DATA">
        <input name="from" type="hidden" value="BPCS_AVM">
        <input name="where" type="hidden" value="Partner_ID='122'">
        <input name="componentname" type="hidden" value="srcSupplier">
        <input name="staticstrings" type="hidden" value="Supplier address">
        <input name="staticfields" type="hidden" value="LTRIM(RTRIM(VNDAD1))+'<br>'+LTRIM(RTRIM(VNDAD2))+'<br>'+LTRIM(RTRIM(VCITY))+'<br>'+LTRIM(RTRIM(VPOST))+' '+LTRIM(RTRIM(VSTATE))">

        <input class="nostyle" name="returnfield" type="hidden" value="VNDNAM">
        <input class="nostyle" name="returnid" type="hidden" value="VENDOR_id">
        <table ><tr>

            <td>
                Supplier ID: 
            </td>
            <td>
                <input  class="nostyle" type="text" name="VENDOR" id="VENDOR" style="width:150px;"/>
            </td>

            <td>
                Supplier name: 
            </td>
            <td>
                <input  class="nostyle" type="text" name="VNDNAM" id="VNDNAM" style="width:150px;"/>
            </td>

                </tr><tr>

    </tr>
    </table>
    </form>

(私はすでにフォームからテーブルを削除しようとしました)

現在のフィドルコード:http: //jsfiddle.net/MyBZC/

4

4 に答える 4

2

これを試してください: Working Demo http://jsfiddle.net/tFSdq/ または http://jsfiddle.net/bnTLR/

コンテナ内の入力をシリアル化する必要があります。コンテナそのものではなく

これがニーズに合うことを願っています:)

PS を使用しclick me manて 2 番目のデモでアラートを取得するには、ボタンをクリックすることを忘れないでください。serialize.serializeArray

コード

var ds= $("#sfn input").serializeArray();
alert(ds);​

さらに、下の 3 つの画像を参照してください。これらの 2 つのアラートが入力された値に表示される内容を示しています。 ここに画像の説明を入力

画像2

ここに画像の説明を入力

画像3

ここに画像の説明を入力

于 2012-10-15T07:03:55.253 に答える
1

#idこのよう に追加

var ds= $("#sfn").serializeArray();
alert(ds);

serializeArray()serialize()両方とも私のために働いていますmyfiddleをチェックしてください

于 2012-10-15T06:57:58.230 に答える
1

jQuery docsに記載されているように、それは違法なHTMLであるため、ネストされたフォームでserializeArray()は機能しません。

serializeArray()はフォーム要素でのみ機能することに注意してください。このメソッドを別の要素で使用しても機能しません。また、このメソッドはネストされたフォームでは結果を返しません。これは HTML では違法です。

serialize()jhonraymos で述べられているように作業するか、Tas_innit の方法を使用する必要がある場合があります。

于 2012-10-15T07:07:03.227 に答える
0

これを見てください: http://docs.jquery.com/Ajax/serializeArray

ここに書かれている....「このメソッドはネストされたフォームに対して結果を与えません。これはとにかく HTML では違法です」

于 2012-10-15T07:07:22.693 に答える