form不能提交js动态添加的input表单元素的值?请各位大侠帮帮忙!如果回答的好,追加一至多倍积分!谢谢

后台是java语言开发的!
代码:
var rowContent=new Array(
'<input type="text" size="8" value="" onfocus=\"onInputEditorFocus()\" onblur="idTextOnBlur(this)">',
'<input type="text" value="" id="valueText" onfocus=\"onInputEditorFocus()\" onblur=\"onInputEditorBlur()\">',
'<input type="button" value="删除" onclick="delRow(this);">');

// 添加1行
function addTableRow(autoTableId, rowIndex, rowContent) {
var tbobj = document.getElementById(autoTableId);
var trobj, tdobj;
if (rowIndex == -1) {
trobj = tbobj.insertRow(-1);
} else {
trobj = tbobj.insertRow(rowIndex + 1);
}
for ( var i = 0; i < rowContent.length; i++) {
tdobj = trobj.insertCell(-1);
tdobj.innerHTML = rowContent[i];
tdobj.className = "NewTD";
}
}
name值是从另外一个input的value值,是动态的,所以:document.getElementById("valueText").name = obj.value;
注意:浏览器使用的是ie8

第1个回答  2012-02-03
可以, 你确定给input指定了name属性么? 如果不指定name只有id是不行的.追问

name值是从另外一个input的value值,是动态的,所以:document.getElementById("valueText").name = obj.value;

追答

给你贴一段DOM手册里关于name属性的说明吧.
The NAME attribute cannot be set at run time on elements dynamically created with the createElement method. To create an element with a name attribute, include the attribute and value when using the createElement method.
这个name的动态是有一些限制的.

追问

嗯,谢谢!能不能把这个doc手册发给我啊,要是中文的就更好啦!我英文不怎么样!邮箱:18721459151@163.com

追答

嗯, 一半是中文的,一半是英文的. 已经发到你的邮箱了. 查收.

追问

en 谢谢!

第2个回答  2012-02-03
最好还是别这样直接插入代码,创建节点。
var inp = document.createElement("input");//创建节点
inp.setAttribute("type","text"); //设置属性
document.getElements("from")[0].appendChild(inp);追问

你说的也有道理!但是我添加的要有布局的!这样appendChild不好给它布局吧!

追答

你给他加样式啊。。
inp.setAttribute("class","className");

第3个回答  2012-02-03
添加的input在form之外,就不能被form提交追问

的确在form标签里面!

追答

给点码。看看吧

第4个回答  2012-02-03
把你代码贴出来看下追问

贴了代码

第5个回答  2012-02-03
基本同意楼上观点。请贴代码,不然不好做判断追问

贴了代码了

追答

input 没有name属性

追问

初始化的时候是没有加name属性;但是在后面js动态给它加了name属性值:document.getElementById("valueText").name = obj.value;这会有问题吗?

追答

看到了,但一定要显式的写出来。

追问

嗯,那我试试吧!好像还是不行!没有提交到后台!

追答

看到了,但一定要显式的写出来。
比如:
将数组元素定义成:
''
生成时写:
tdobj.innerHTML = rowContent[i].replaceAll("#NAME#", obj.value);

追问

''
好像可以提交到后台了;只不过name的属性值没法替换;name属性值为:“#NAME#"
document.getElementById("valueText").name = obj.value;
这样不能更换name的属性值!但是也不能tdobj.innerHTML = rowContent[i].replaceAll("#NAME#", obj.value);因为此时还不知道obj.value的值!

追答

你这样会有一个问题,加第2行的时ID会冲突。

追问

是啊;但是目前没有更好的办法解决啊;您有什么更好的提议吗?

追答

加行时,同时把name对应的对象或对象数组也传进来

追问

嗯,非常感谢你的帮助!谢谢!

本回答被提问者采纳
相似回答