我需要生成两种类型的字段,从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
怎么解决?
答案 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");
然后将它们附加到您的表单中。