2016-10-04 79 views
-1

如何創建一個do ... while循環(或者如果有更好的方法來解決這個問題 - 請指教)以獲取可能有附加信息的表單?JS用按鈕添加表單字段

背景 - 我有一個表單可以接受用戶對特定位置(如地下室)的評估。每個表單只使用一個位置,這很好地工作,並提交給我的分貝沒有問題。

現在我想用「添加新位置」按鈕來增強此表單。我不明顯地想要創建新頁面,而是一個可以存儲第一個位置的循環,保存它(我知道可以用會話變量完成),然後清除位置2,3,4的字段等

我的困惑是關於按鈕的功能。這是什麼類型的按鈕?使用唯一標識重置,如new_loc[]

,然後當我寫這篇文章的do ... while循環我應該做這樣的:

<?php 
do { 
    all my form fields 
} while (some condition that looks for the button submit); 
?> 

行,所以我有一個創建了一個簡單的JS,可以「處理」這一點。

var counter = 1; 
var limit = 5; 
function addInput(locInformation){ 
    if (counter == limit) { 
      alert("You have reached the limit of adding " + counter + " locations"); 
    } 
    else { 
      var newdiv = document.createElement('div'); 
      newdiv.innerHTML = "Entry " + (counter + 1) + " <br><br><input type='text' name='location[]'>"; 
      document.getElementById(locInformation).appendChild(newdiv); 
      counter++; 
    } 
} 

現在的問題是,JS將新增1個新領域 - 如何HTML的一個巨大的塊添加到JS什麼建議?我試圖將所有的字段添加到JS,並且我得到了一大堆未封閉的字符串錯誤。

+1

PHP不能 「添加」 到沒有原始形式的表單應該是ing提交給服務器,所以php可以用任何用戶輸入的數據仍然在表單中重建頁面。您需要JS將字段添加到表中,而不需要任何服務器參與。 –

+0

好吧,這樣纔有意義,爲什麼這不起作用。讓我試試JS –

回答

0

好的我已經想通了。感謝Marc B建議JS。

HTML的按鈕

<input style="margin-left:5px;" class="btn btn-primary" type="button" value="Add Additional Location" onClick="addInput('locInformation');"> 

JS

var counter = 1; 
var limit = 5; 
function addInput(locInformation){ 
     if (counter == limit) { 
      alert("You have reached the limit of adding " + counter + " inputs"); 
    } 
    else { 
      var newdiv = document.createElement('div'); 
      newdiv.innerHTML = "<h3>Location " + (counter + 1) + "</h3>" + document.getElementById('additionalLoc').innerHTML; 
      document.getElementById(locInformation).appendChild(newdiv); 
      counter++; 
    } 
} 

然後最後是新locInformation東西:

<div id="additionalLoc" language="text"> 
huge block of HTML with additional fields 
</div> 
0

所以首先你的表格必須有action="" method="post" 那麼這個PHP添加到您的網頁:

session_start(); 
      if (isset ($_POST['NameOfSubmitButtonInsideForm'])) { 
       if (!isset ($_SESSION['sessionName'])) { 
        $_SESSION['sessionName'] = 1 
       } 
       for ($i = 0; $i <= $_SESSION['sessionName']; $i++) { 
        echo 'some html code like a form with a input that has 
         <input type="submit" name="submit- . $i .'EndInputTag>'; 
       }; 
      } 

所以這將循環的次數,用戶點擊該按鈕,你可以重複出基於HTML代碼在這個數字上,或者你在循環中需要做什麼。

相關問題