0

コンテナ div 内に html フォームをロードしています。この html は、データベースから取得されるテンプレートです。次に、ユーザーはフォーム (またはフォームの一部) に記入します。

ユーザーが作業を終えたら、関数を呼び出すボタンを選択します。

function submitForm() {
    var workflowID = $('#workFlowID').val();
    var formID = $('#formID').val();
    var uploadedFiles = $('#uploadedFiles').val();
    var htm = $('#formContent').html();
    console.log(htm);
    alert(workflowID + ", " + formID + ", " + uploadedFiles + ", : " + htm);
}

問題は、フォームが忠実に再現されることですが、結果の「htm」に入力フィールドが含まれていないため、新しいテーブルに保存するために入力されているため、html を再現できる必要があります。私は何が欠けていますか、それとも可能ですか?

追加情報を求められた; これは、html に 10 個の入力領域がある例です。適切な入力が完了すると、フォームが保存され、他の人がその部分を見て追加できるようになります。ただし、フォームに入力すると、上記の参照コードは、ユーザーが入力した値を差し引いた html を取得します。

4

3 に答える 3

0

他の人のようにあなたの投稿にコメントする方法がわかりませんが、これを容易にするためにサーバー側でどの言語を使用していますか?C#、PHP、それとも...

編集:

以前も同じような問題があったと思います。私がしたのは、ページ全体(すべてのhtml要素とすべて)に対するAJAXリクエストでした。このデータを変数に戻します。探している情報については、この変数を解析する必要があります。たとえば、その間のすべてが必要で、文字列の解析を行ってそれを分離することができる場合です。

これが良いことだと言っているわけではありませんが、正しく理解していれば実行可能な解決策になるかもしれません。

http://api.jquery.com/html/を試し て、フォームまたは本文のIDで使用できる場合もあります。

于 2012-08-01T17:21:02.770 に答える
0

「formContent」というフォーム要素内に div があり、その div 内のすべての入力の値 (おそらく html) を抽出したいのですが、送信時に入力の数が不明ですか? それらはすべてテキストエリアですか?

jQuery を使用して適切な領域をすべて見つけてみてください。ただし、値をどうすればよいかわかりません。

var value = "";
$("#formContent").children("textarea").each(function(){value += $(this).val()});

編集:OPとの議論の後にさらに追加

したがって、ElementID と Value の少なくとも 2 つの列を持つデータベース テーブルを追加します。ElementID の存在をチェックする Web サービスを作成します。存在する場合は値を更新し、存在しない場合は挿入します。

このデータを使用して、作成時にフォームの値を入力します。これはサーバー側の課題になる可能性があります。取得してデータを入力するには、クライアントでのいくつかの呼び出しに依存する必要がある場合があります。

最後に、ユーザーが送信をクリックした後、上で示した同様のアプローチを使用してすべての入力を検索し、Web サービスへの ajax 呼び出しを実行して、要素の ID とその値を送信します。このようなもの:

$("#formContent").find("input", "select", "textarea").each(
    function()
    {
        var elementId = $(this).attr("id");
        var value = $(this).val();
        //perform ajax call to webservice with elementId and value parameters
    }
);

すべての elementId は一意である必要があり、これにより複数の HTTP リクエストが発生する可能性があることに注意してください。それ以外の場合は、解析可能なデータを Web サービスに送信して、すべてのデータを一度に送信し、それに応じて更新することをお勧めします。

于 2012-08-01T17:26:34.600 に答える
0

各タグを調べて属性を設定するという概念が答えであることがわかりました。

$("input").each(function () {
    if ($(this).is(':text')) { $(this).attr("value", $(this).val()); }
    else if ($(this).is(':checkbox')) {
        if ($(this).is(':checked')) {
            $(this).attr('checked', 'checked');
        }
        else {
            $(this).removeAttr('checked');

        }
        if ($(this).is("textarea")) {
                $(this).text($(this).val());
        }
        if ($(this).is(':radio')) {
            if ($(this).is(':checked')) {
                $(this).attr('checked', 'checked');
            }
            else {
                $(this).removeAttr('checked');

            }

        }

次に、戻って、最初にやろうとしていたことを実行できます。

 var htm = $('#formContent').html();

これには、html に入力された値が含まれます。

すべての回答に感謝し、私を正しい方向に向けるのに役立ちました.

于 2012-08-02T18:21:46.367 に答える