2015-04-22 3 views
0

Я динамически добавляю текстовое поле всякий раз, когда пользователь нажимает кнопку, чтобы добавить больше, что отлично работает. Однако в PHP, когда я получаю переданные значения поля $ _POST ['skills'], я получаю только первое значение текстового поля, а не динамически добавленные. Я почти уверен, что что-то не так с тем, как я добавляю текстовые поля в javascript. Я использую следующий метод, чтобы добавить поле текстового поля:Динамически добавить текстовое поле в javascript

function addTextBoxField() 
{ 
      var input = document.createElement('input'); 
      input.type = "text"; 
      input.name = "skills[]"; 
      input.size = "30"; 

      var container = document.getElementById("skillfield"); 
      container.appendChild(input); 
} 

HTML-код у меня есть для текстового поля:

... 
<td> 
<div id="skillfield"> 
    <input type="text" size="30" name="skills[]" /> 
</div> 
</td> 
<td><a href="javascript:void(0);" class="addLink hidden" onclick="addTextBoxField();"><div class="button">+ Add</div></a></td> 

Вот код PHP, а также:

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    $allskills = $_POST['skills']; 
    $size = count($_POST['skills']); 
    print_r($allskills); 
} 

Выход следующий: хотя я ввел три значения

Array ([0] => Java)

+1

все входы внутри '

'? –

+1

В тексте вы указываете '$ _POST ['skill']', но ваше имя var объявляется как ** skills [] **, это опечатка в вашем вопросе? –

+0

где php-код? это должно быть 'foreach ($ _ POST ['skills'] как $ skill) echo $ skill;' – Sachink

ответ

0

Ваше имя поля skills не skill .so оно должно быть $_POST['skills']. $_POST['skills'] - массив в этом случае. Поэтому попробуйте обратиться к var_dump($_POST['skills']);, и вы увидите все значения.

0

Что касается $ _POST [ 'навыки'] является массивом, Попробуйте это ..

$skill = $_POST['skills']; 

foreach($skill as $value){ 

echo $value; 

} 
0

вы имеете в виду значения $ _POST [ 'умение s']
я не подумайте, что что-то не так с вашим javascript, что неправильно, так это то, как вы читаете данные сообщения в своем php. Почтовые данные будут массив в этом случае, так что вы получить доступ к нему, как этот
$_POST['skills'][0] //value of 1st input
$_POST['skills'][1] //value of 2nd input

0

$_POST['skills'] является массивом, поэтому использовать print_r() для просмотра array.You можно использовать следующим образом

<script type="text/javascript"> 
    function addTextBoxField() 
    { 
       var input = document.createElement('input'); 
       input.type = "text"; 
       input.name = "skills[]"; 
       input.size = "30"; 

       var container = document.getElementById("skillfield"); 
       container.appendChild(input); 
    } 
</script> 
    <form method ="post"> 
     <td> 
      <div id="skillfield"> 
       <input type="text" size="30" name="skills[]" /> 
      </div> 
     </td> 
     <td> 
      <input type="submit" name="submit" value="Submit"/> 
     </td> 
    </form> 
    <td><a href="javascript:void(0);" class="addLink hidden" onclick="addTextBoxField();"><div class="button">+ Add</div></a></td> 
<?php 
    if(isset($_POST['submit']) && $_POST['submit'] == 'Submit'){ 
     echo "<pre>"; 
      print_r($_POST['skills']); 
     echo "</pre>"; 
    } 
?> 
+0

Я попробовал распечатать массив для проверки, и он отображается только как массив размером 1, со значением, введенным в первом текстовом поле , – anon195

+0

Скопируйте весь код в новый файл и протестируйте его, он работает для меня. Добавьте несколько текстовых полей и заполните форму. –

0

вы можете использовать длину массива. Попробуйте это

for($i=0;$i<=count($skills)-1;$i++) 
{ 
    $per=$skills[$i]*$skills[$i]; 
    echo $per; 
} 
Смежные вопросы