如何生成<表单:输入>从JS动态标记

How to generate <form:input> tags dynamically from JS?

本文关键字:JS 动态 gt 何生成 lt 表单 输入      更新时间:2023-09-26

我需要生成两种类型的字段,并从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>字段正确地显示在页面上。链接到生成的页面源代码>>https://dl.dropboxusercontent.com/u/106355152/form_input.PNG如何解决?

您想要做的事情可能无法完成。<form:input><form:hidden>似乎是服务器端标签——这就是为什么它们只在java端工作的原因。

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

    var formInput = document.createElement("input");
    var formHidden = document.createElement("input");
    formInput.setAttribute("type", "text");
    formHidden.setAttribute("type", "hidden");

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