2016-04-20 164 views
-2

我正在創建一個php頁面進行陣營註冊,非常基本,我不想用多個Name標籤/文本框來粘貼頁面。我在想的是默認情況下有一個文本框和一個標籤,可能是藍色文本,說添加另一個(甚至是一個按鈕),當按下頁面將保留當前的數據,但添加一個額外的標籤和文本框,以便更多的信息可以被添加進來。這就是我如何捕獲1的數據,爲了實現我的上述結果,是否可以輕鬆修改這些數據?PHP創建添加另一個按鈕

<td><label for="lblName">Campers Name:</label></td> 
<td class="style1"><input type="text" name="txtName" 
    maxlength="100" size="30"></td> 

編輯
鏈接廣告什麼也不做,當我點擊它,我相信這是我缺少明顯的,但這裏到處是語法,我應該怎麼改變,使其工作?

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $("#newCamper").on('click', function() { 
     $('#Campers').after(
     '<div id="Campers">' + 
     '<td><label for="lblName">Campers Name: </label></td>' + 
     '<td class="style1"><input type="text" name="txtName" maxlength="100" size="30"></td>' + 
     '<a href="#" id="rmCamper"> remove this</a>' + 
     '</div>' 
    ); 
    }); 
    $(document).on('click', '#rmCamper', function() { 
     $(this).closest('#Campers').remove(); 
    }); 
</script> 
</head> 
<body> 
    <div id="Campers"> 
     <td><label for="lblName">Campers Name:</label></td> 
     <td class="style1"><input type="text" name="txtName" maxlength="100" size="30"></td> 
     <a href="#" id="newCamper">Add another</a> 
    </div> 
</body> 
</html> 

編輯#2
當我去到localhost我的機器上並按下添加按鈕它改變了URL,但沒有附加字段添加到頁面爲localhost#?

+0

你想要一個有效地添加標籤/文本輸入對的按鈕嗎?所以如果你按下按鈕50次,你會得到50個輸入來輸入你的數據? –

+0

在JS中執行此操作並將name屬性設爲動態數組? – chris85

+0

@BobbyJack - 好點。我應該限制它會增加多少。 – user2676140

回答

0

我知道你在尋找一個PHP的答案,但是對於你需要做的事(DOM操作),你最好使用JavaScript。您可以創建另一個輸入字段並增加一個變量以附加到相同的ID字段。見this question。如果您跟蹤以此方式創建的輸入字段總數,則可以遍歷表單提交中的那些字段以捕獲所有數據。

+0

爲什麼要將一個變量增加到ID屬性(假設這就是你的意思)。甚至沒有ID屬性,名稱屬性可以很容易地變成一個數組,以防止出現任何問題。 – icecub

+0

@icecub - 是的,好點。 – DanWake

1

我認爲你可以使用一點jQuery代碼來完成這項工作;)你所要做的就是在你的頁面中包含https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js

<div id="Campers"> 
    <td><label for="lblName">Campers Name:</label></td> 
    <td class="style1"><input type="text" name="txtName" maxlength="100" size="30"></td> 
    <a href="#" id="newCamper">Add another</a> 
</div> 

// jquery code below: 

$("#newCamper").on('click', function() { 
    $('#Campers').after(
    '<div id="Campers">' + 
    '<td><label for="lblName">Campers Name: </label></td>' + 
    '<td class="style1"><input type="text" name="txtName" maxlength="100" size="30"></td>' + 
    '<a href="#" id="rmCamper"> remove this</a>' + 
    '</div>' 
); 
}); 
$(document).on('click', '#rmCamper', function() { 
    $(this).closest('#Campers').remove(); 
}); 

https://jsfiddle.net/yb88s47s/

+0

確保在每個輸入中不使用'name =「txtName」''。相反,添加使用'name =「txtName _」+ i',其中我增加每個添加的輸入。 – SunKnight0

+0

是啊,每個領域應該是唯一的,以防止overrite值,thx @ SunKnight0 :) –

+0

是否有可能總是有添加另一個按鈕在底部?或者是對很多代碼? – user2676140

1

在現實生活中一個很可能是最好使用javascript這個確實的。但是,僅僅使用php是完全可能的。看看下面的例子:

<?php 
$names = isset($_GET['txt']) ? $_GET['txt'] : []; 
$i = 0; 
?> 
<form method="get"> 
    <?php foreach ($names as $name) : ?> 
     <label for="txt<?= $i ?>">member</label> 
     <input name="txt[]" id="xt<?= $i ?>" value="<?= $name ?>"> 
     <br> 
     <?php $i++ ?> 
    <?php endforeach; ?> 
    <label for="txt<?= $i ?>">member</label> 
    <input name="txt[]" id="xt<?= $i ?>"> 
    <button type='submit'> 
     add 
    </button> 
</form> 

此表將提交給自己。它首先獲取名稱數組(請注意txt[]字段上的[])。然後它遍歷它們並將它們中的每一個顯示爲輸入。在循環之後,您只需添加1個額外的空字段。

這顯然是一個非常基本的例子,您可能需要一些驗證,並且該添加按鈕上的名稱能夠將其與實際的最終提交區分開來。這只是一個概念證明。

看看代碼在行動here。隨意詢問是否有任何不清楚的地方。

相關問題