2013-09-16 3 views
0
<script type="text/javascript"> 
var i = 1; 
function generateRow() { 
var d=document.getElementById("div"); 
d.innerHTML+="<p><input type='text' name='[Post][textbox1][" + i + "]'>"; 
i = i + 1; 
} 

Вставка данных множественного текстового поля в одной базе данных, поданных

<?php $this->Form->input('textbox1',array(
       'type' => 'textbox', 
       'label' => false, 
       'required')); ?> 
       <div id="div"></div> 

    <input type="button" value="Add" onclick="generateRow()"/> 

Html Для textBox1

<div class="input textbox"><input name="data[Post][textbox1]" 
required="required"type="textbox" id="PostTextbox1"/></div> 

Когда я нажимаю на кнопку "Добавить", он создает новый текстовый блок с name="[Post][textbox1][1]" Я могу ввести данные в это поле, но

Выпуск 1

Когда я снова нажмите на кнопку Добавить сбросит все текстовое поле, и я должен ввести эти данные снова

Выпуск 2

$tbVal = $this->request->data['Post']['textbox1']; 
$inn = implode(',',$tbVal); 

Когда я использую этот код чтобы взорвать данные из текстового поля, он показывает только первые данные

+0

вам нужно добавить HTML вместо того, чтобы использовать innerHTML для 1-го выпуска –

ответ

1

Вот рабочий пример на основе первого ответа и мой ответ:

<script type="text/javascript"> 
var i = 1; 
function generateRow() 
{ 

    //Create an input type dynamically. 
    var element = document.createElement("input"); 
    //Assign different attributes to the element. 
    element.setAttribute("type", "text"); 
    element.setAttribute("value", ""); 
    element.setAttribute("name", "data[Post][textbox][" + i + "]"); 
    var foo = document.getElementById("fooBar"); 
    //Append the element in page (in span). 
    foo.appendChild(element); 

    i = i + 1; 

} 
</script> 

<form> 

<div id="fooBar" class="input textbox"> 
    <input name="data[Post][textbox][0]" required="required" type="textbox" id="PostTextbox1"/> 
</div> 

<input type="button" value="Add" onclick="generateRow()"/> 
<input type="submit" > 
</form> 

<?php 
print_r($_REQUEST); 
?> 

Вы должны использовать манипуляции DOM яваскрипт функция не сбросить значение текста и использовать собственное имя для текстовых полех

1

вы сбросили все данные в div document.getElementById("div") там для этого повторно установите все данные в текстовое поле.

попробовать:

//Create an input type dynamically. 
var element = document.createElement("input"); 
//Assign different attributes to the element. 
element.setAttribute("type", type); 
element.setAttribute("value", type); 
element.setAttribute("name", type); 
var foo = document.getElementById("fooBar"); 
//Append the element in page (in span). 
foo.appendChild(element); 

на кнопку мыши

0

Что касается вопрос 2

Этот код:

d.innerHTML+="<p><input type='text' name='[Post][textbox1][" + i + "]'>"; 

должны быть

d.innerHTML+="<p><input type='text' name='data[Post][textbox1][" + i + "]'>"; 
+0

Я сделал, как вы предлагаете, и теперь это приносит мне пустой массив – Aryan

+0

Хотя я добавил значения он приносит этот массив [TextBox1] => массив ( [1] => [2] => [3] => [4] => [5] => ) – Aryan

+0

хорошо .. вы массив подобны данным [Post] [textbox1] [0], data [Post] [textbox1] [1] ... вы хотите быть в другом формате? –

Смежные вопросы