javascript php从动态添加的文本框中获取值

时间:2009-09-07 18:44:00

标签: php javascript textbox

我正在使用它来动态生成文本框:`

<html>
<head>
<title>Dynamic Form</title>
<script type="text/javascript" >
function CreateTextbox()
{
var i = 6;
createTextbox.innerHTML = createTextbox.innerHTML +"<input type=text name='flow'+ i/>"
i++;
}
</script>
</head>
<body>

<form name="form" action="post" method="">
<input type="button" value="clickHere" onClick="CreateTextbox()">
<div id="createTextbox"></div>
</form>
</body>

如何从添加的文本框中获取值?

我正在使用javascript和php。

3 个答案:

答案 0 :(得分:1)

将生成的ID添加到文本框并使用此ID检索输入

function CreateTextbox()
{
  var i = 6;
  createTextbox.innerHTML = createTextbox.innerHTML +"<input type=text name='flow'+ i id='box'+i/>"
  i++;
}

function getBox(var id){
  return document.getElementById("box"+i);
}

答案 1 :(得分:0)

set name =“flow []”这样你就可以使用$ _POST ['flow']将所有值作为数组获取

答案 2 :(得分:0)

  

createTextbox.innerHTML = createTextbox.innerHTML +“&lt; input type = text name ='flow'+ i /&gt;”

您的报价位置错误,'+ i'实际上是文字字符串的一部分!你的意思是:

'<input type="text" name="flow'+i+'" />'

(还添加了type属性的引号:如果您打算使用XHTML语法也可以正确执行。)

然后,您将获得发送到脚本的表单控件名称,例如“flow6”。 PHP用户更常用的方法是使用一个数组,你可以通过在名称中加上方括号来说服PHP:

'<input type="text" name="flow['+i+']" />'

你似乎也错过了一个:

var createTextbox= document.getElementById('createTextbox');

不要依赖IE将命名元素转换为全局变量的不当行为;它不适用于其他地方。

无论如何,避免追加innerHTML。每次执行此操作时,createTextbox中的所有内容都将被粗略地序列化为一串HTML,然后您更改字符串并将其写回,将其全部解析回对象。在此过程中,您将丢失任何无法序列化为HTML的内容,例如JavaScript引用和事件绑定。

如果您可以单独写入innerHTML,或使用DOM方法创建元素,那通常会更好。