2009-09-07 1 views
0

Я использую это, чтобы создать текстовое поле динамически: `Javascript PHP получить значение из динамически добавленного текстового поля

<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 не установлены правильно. –

+0

См. Мой ответ здесь: http://stackoverflow.com/questions/1391875/how-do-i-tain-the-value-of-dynamically-added-textboxes/1391933#1391933 – CMS

ответ

1

Добавить сгенерированный идентификатор в текстовое поле и использовать этот идентификатор, чтобы получить на вход

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» на самом деле является частью литеральной строки! Что вы имели в виду был:

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

(также добавил кавычки в атрибут типа:. Если вы собираетесь использовать синтаксис XHTML может также сделать это правильно)

Вы бы затем получить имена управления формой например «поток6», отправленный на ваш скрипт. Более обычный способ для пользователей PHP будет использовать массив, который вы можете убедить PHP сделать, поставив квадратные скобки в названии:

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

Вы также, кажется, не хватает: с

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

Не полагайтесь на неправильное поведение IE для превращения именованных элементов в глобальные переменные; он не будет работать в другом месте.

Во всяком случае, избегайте добавления к innerHTML. Каждый раз, когда вы это делаете, все внутри createTextbox будет последовательно сериализовано в строгий HTML-код, затем вы изменяете строку и записываете ее обратно, все разбираете на объекты. В процессе вы теряете все, что не может быть сериализовано в HTML, например, ссылки на JavaScript и привязки событий.

Если вы можете сделать одиночную запись в innerHTML или использовать методы DOM для создания своих элементов, это, как правило, лучше.