2016-04-20 167 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。随意询问是否有任何不清楚的地方。

相关问题