通过JavaScript DOM创建的表单input,不能随表单提交而提交,比如用下面脚本创建输入表单:
function handlevent(event){ var count = document.getElementById("answerint").value; count = parseInt(count); var eve = event||window.event; var theelement; for(var element = eve.srcElement||eve.target;element.tagName!="TR";element=element.parentElement){ theelement = element.parentElement; } var tr = document.createElement("tr"); var td = document.createElement("td"); var label = document.createElement("label"); label.appendChild(document.createTextNode("选项内容")); td.appendChild(label); tr.appendChild(td); var td = document.createElement("td"); var divdiv = document.createElement("div"); for(var i=1;i<=count;i++){ var div = document.createElement("div"); var input = document.createElement("input"); input.setAttribute("type","text"); input.setAttribute("name","contentstr"); input.style.width="250px"; div.appendChild(document.createTextNode("内容:")); div.appendChild(input); var input = document.createElement("input"); input.setAttribute("type","text"); input.setAttribute("name","score"); input.style.width="20px"; div.appendChild(document.createTextNode(";分值:")); div.appendChild(input); var input = document.createElement("input"); input.setAttribute("type","text"); input.setAttribute("name","score"); input.style.width="350px"; div.appendChild(document.createTextNode(";分析:")); div.appendChild(input); td.appendChild(div); } tr.appendChild(td); insertAfter(tr,theelement); } function insertAfter(newElement,targetElement) { var parent = targetElement.parentNode; if(parent.lastChild == targetElement) { parent.appendChild(newElement); } else { parent.insertBefore(newElement,targetElement.nextSibling); } }
在Form提交的时候,name为contentstr的值不能被反射到FormBean
原因可能是防止脚本攻击,不允许随意添加表单提交的Form;
另外尝试了另外一种办法,work了:
通过javascript对表格操作的insertRow()、insertCell()来添加单元格,通过innerHTML来增加表单
另外尝试了一种通过创建DOM而获取表单值的方法,比如:
var s=obj2.getElementsByTagName("input").length; var str=""; for(var i=0;i<s;i++) { str+=obj2.getElementsByTagName("input").item(i).getAttribute("value")+" " ; } alert(str);