【问题标题】:javascript php get value from a dynamically added textboxjavascript php从动态添加的文本框中获取值
【发布时间】:2009-09-07 18:43:59
【问题描述】:
我正在使用它来动态生成一个文本框:`
<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。
【问题讨论】:
标签:
php
javascript
textbox
【解决方案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);
}
【解决方案2】:
set name="flow[]" 这样您就可以使用 $_POST['flow'] 将所有值作为数组获取
【解决方案3】:
createTextbox.innerHTML = createTextbox.innerHTML +" "
您的引号放错了位置,'+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 方法来创建您的元素,那通常会更好。