1

<form:input>特定のタグを<form:hidden>使用して、JS から動的に2 種類のフィールドを生成する必要があります。1 つ<form:input>目は入力フィールドで、2 つ目は非表示にする必要があります。問題は<form:input>、入力として認識されず、まったく表示されないことです。しかし、ページのソースコードから見ることができます。

if (bank != null) {
    var fields = bank.additionalFields;
    var additionalRows = document.getElementById("additionalRows");
    for (i = 0; i < fields.length; i++) {

        //from here generates jsp inputs:
        //1 - <form:input>
        //2 - <form:hidden>  for each element from fields

        var formInput = document.createElement("form:input");
        var formHidden = document.createElement("form:hidden");

        formInput.setAttribute("path", "paymentInfo.fields[" + i + "].value");
        formHidden.setAttribute("path", "paymentInfo.fields[" + i + "].id");

        formInput.setAttribute("type", "text");
        formHidden.setAttribute("type", "text");

        formInput.setAttribute("value", "");
        formHidden.setAttribute("value", fields[i].id);

        additionalRows.appendChild(formInput);
        additionalRows.appendChild(formHidden);
    }
}

JSP から生成されたその他の<form:input>フィールドは、ページに正しく表示されています。生成されたページのソースコードへのリンク >> https://dl.dropboxusercontent.com/u/106355152/form_input.PNG どうすれば解決できますか?

4

1 に答える 1

1

あなたがやろうとしていることは、おそらく実行できないでしょう。<form:input>サーバー側のタグのように<form:hidden>見えます-これが、Java側からのみ機能する理由です。

現在のアプローチと同様の方法で、javascript を使用して通常のタグとタグを生成できます。

    var formInput = document.createElement("input");
    var formHidden = document.createElement("input");

    formInput.setAttribute("type", "text");
    formHidden.setAttribute("type", "hidden");

次に、それらをフォームに追加します。

于 2013-07-18T14:24:08.147 に答える