2013-11-26 3 views
0

долгое время читатель, первый раз постер. Я работаю над формой, которая использует поля выбора, чтобы создать количество текстовых полей, которые требуется пользователю. Кажется, что Javascript работает нормально, каждый из них создает правильное количество текстовых полей. Я теряюсь в том, как получить значения из этого различного количества текстовых полей обратно в PHP для дальнейшей обработки. Я был бы признателен за любые советы.Передача данных с текстовых полей, созданных Javascript, на PHP

Вот мой JavaScript (хранится как отдельный файл и вызывается в начале страницы).

     function BuildFormFields($amount) 
         { 
        var 
       $container = document.getElementById('FormFields'), 
       $item, $field, $i; 
         $container.innerHTML = ''; 
        for ($i = 0; $i < $amount; $i++) { 
       $item = document.createElement('div'); 
       $item.style.margin = '3px'; 

       $field = document.createElement('span'); 
       $field.innerHTML = 'Name of Expert'; 
       $field.style.marginRight = '10px'; 
       $item.appendChild($field); 

       $field = document.createElement('input'); 
       $field.name = 'name_expert[' + $i + ']'; 
            $field.type = 'text'; 
           $item.appendChild($field); 

       $field = document.createElement('span'); 
       $field.innerHTML = 'Title'; 
       $field.style.margin = '0px 10px'; 
       $item.appendChild($field); 

       $field = document.createElement('input'); 
       $field.name = 'expert_title[' + $i + ']'; 
       $field.type = 'text'; 
       $item.appendChild($field); 

            $field = document.createElement('span'); 
       $field.innerHTML = 'Organization'; 
       $field.style.margin = '0px 10px'; 
       $item.appendChild($field); 

       $field = document.createElement('input'); 
       $field.name = 'organization[' + $i + ']'; 
       $field.type = 'text'; 
       $item.appendChild($field); 

       $container.appendChild($item); 
        } 
         } 



     function BuildFormFields2($amount2) 
     { 
     var 
       $container2 = document.getElementById('FormFields2'), 
       $item2, $field2, $i2; 

      $container2.innerHTML = ''; 
      for ($i2 = 0; $i2 < $amount2; $i2++) { 
       $item2 = document.createElement('div'); 
       $item2.style.margin = '3px'; 

       $field2 = document.createElement('span'); 
       $field2.innerHTML = 'Competency'; 
       $field2.style.marginRight = '10px'; 
       $item2.appendChild($field2); 

       $field2 = document.createElement('input'); 
       $field2.name = 'competency[' + $i2 + ']'; 
       $field2.type = 'text'; 
       $item2.appendChild($field2); 

       $field2 = document.createElement('span'); 
       $field2.innerHTML = 'Number of Skills'; 
       $field2.style.margin = '0px 10px'; 
       $item2.appendChild($field2); 

       $field2 = document.createElement('input'); 
       $field2.name = 'num_skills[' + $i2 + ']'; 
       $field2.type = 'text'; 
       $item2.appendChild($field2); 

       $container2.appendChild($item2); 
        } 
            } 
        function BuildFormFields3($amount3) 
     { 
      var 
       $container3 = document.getElementById('FormFields3'), 
       $item3, $field3, $i3; 

      $container3.innerHTML = ''; 
      for ($i3 = 0; $i3 < $amount3; $i3++) { 
       $item3 = document.createElement('div'); 
       $item3.style.margin = '3px'; 

       $field3 = document.createElement('span'); 
       $field3.innerHTML = 'Position'; 
       $field3.style.marginRight = '10px'; 
       $item3.appendChild($field3); 

       $field3 = document.createElement('input'); 
       $field3.name = 'position[' + $i3 + ']'; 
       $field3.type = 'text'; 
       $item3.appendChild($field3); 



       $container3.appendChild($item3); 
      } 

          } 

А вот пример одного из «р» блоков я в настоящее время используется для полей выбора:

<p><strong>Number of Experts that Participated: </strong><select name="number_experts" onchange="BuildFormFields(parseInt(this.value, 10));"> 
    <option value=0>-- Skip for Now --</option> 
    <?php 
    for ($range = 1; $range <= 10; $range++) 
    { 
    echo '<option value=' . $range . '>' . $range . '</option>'; 
    } 
    ?> 
    </select> 
    <div id="FormFields" style="margin: 20px 0px;"></div> 
    </p> 
+0

Я благодарю всех за ваши ответы до сих пор. Я хотел бы отметить, что часть HTML/PHP уже имеет теги правильной формы для работы. Моя проблема заключается в том, что все эти текстовые поля, созданные Javascript, получают эти значения в переменных на стороне PHP после нажатия кнопки отправки. – user3035089

ответ

0

Making, что ваши входы обернуты в виде тега и с помощью FormData объект, вероятно, лучший способ.

function sendDetails() { 
    var fData = new FormData(document.getElementById('MyFormID')); 
    $.post('/your/submission/url.php', fData, function (data) { 
     // Your success script here 
    }); 
} 
$('someButton').bind('click', sendDetails); 
0

Try:

<p><strong>Number of Experts that Participated: </strong><select name="number_experts" onchange="BuildFormFields(parseInt(this.value, 10));"> 
    <option value=0>-- Skip for Now --</option> 
    <?php 
    for ($range = 1; $range <= 10; $range++) 
    { 
    echo '<option value=' . $range . '>' . $range . '</option>'; 
    } 
    ?> 
    </select> 
    <form action="action.php" method="post"> 
    <div id="FormFields" style="margin: 20px 0px;"></div> 
    <input type="submit"/> 
    </form> 
    </p> 

В action.php, вы можете использовать что-то вроде

<?php echo $_POST["thefieldnamefromyourhtml"]; ?> 
+0

Я ценю быстрый ответ. У меня уже есть теги формы в php-скрипте, я просто показывал вам один блок выбора блока, чтобы продемонстрировать, что у меня было. – user3035089

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