2009-09-07 89 views
0

我使用這個動態生成一個文本框:`JavaScript的PHP的GET值從動態添加文本框

<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。

+0

圍繞「name-attributes」值的單引號未正確放置。 –

+0

看到我的答案在這裏:http://stackoverflow.com/questions/1391875/how-do-i-retain-the-value-of-dynamically-added-textboxes/1391933#1391933 – CMS

回答

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); 
} 
+0

你能給一個簡單的例子?謝謝。 – noob

+0

在這裏你去。那有意義嗎? – marcgg

0

集名稱=只需使用$ _ POST [「流[]」這樣你就可以得到所有值作爲一個數組」流']

0

createTextbox.innerHTML = createTextbox.innerHTML + 「<輸入類型=文本名稱= '流動' + I />」

你報價是在錯誤的地方, '+ 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方法創建元素,那通常會更好。