如何从JS动态生成<form:input>标签?</form:input>

时间:2013-07-18 14:10:38

标签: javascript html dom

我需要生成两种类型的字段,从JS动态生成特定标记<form:input><form:hidden>。 第一个<form:input>应该是第二个输入字段,必须隐藏。 问题是<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>字段正在页面上正确显示。 链接到生成的页面源代码&gt;&gt; https://dl.dropboxusercontent.com/u/106355152/form_input.PNG 怎么解决?

1 个答案:

答案 0 :(得分:2)

你想要做的事情可能无法完成。 <form:input><form:hidden>似乎是服务器端标记 - 这就是他们只在java端工作的原因。

您可以使用javascript以与当前方法类似的方式生成常规和标记:

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

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

然后将它们附加到您的表单中。