我有这个简单的表格
<form action="" method="post" class="smart-green">
<h1>Contract Form
<span>Please fill all the texts in the fields.</span>
</h1>
<label>
<span>Client:</span>
<input type="text" name="client" placeholder="Your Client Name" />
</label>
<label>
<span>Your Name (Salesman):</span>
<input type="text" name="salesman" placeholder="Name" />
</label>
<label>
<span>Construction Name:</span>
<input type="text" name="construction" placeholder="Construction Name" />
</label>
<label>
<span>City:</span>
<input type="text" name="city" placeholder="City" />
</label>
<label>
<span>Items:</span>
<input type="text" name="id_item" placeholder="Item" />
</label>
<label>
<span> </span>
<input type="button" class="button" value="Send" />
</label>
</form>
这是订单的表格。我需要能够输入我要输入的项目的值(例如5),然后我需要“项目”输入显示5次。我还需要能够将其删除,以便用户自行纠正。我不知道如何在Javascript中编码,这甚至可能吗?怎么样?我需要稍后作为控制器中的数组访问它。这就是为什么我将该字段的名称作为数组。提前感谢您的帮助。
编辑:我刚刚发现了类似于我需要的内容:http://www.sanwebe.com/2013/03/addremove-input-fields-dynamically-with-jquery 我只是不希望它成为一个按钮,而是一个带有数字输入的字段,并且它没有限制。我希望我知道Javascript:&lt;EDIT2:也许我写的不清楚,但我可以使用Javascript,我只是不知道如何正确编程,所以如果有人知道如何在Javascript中实现,我会很高兴。
答案 0 :(得分:0)
听起来您需要询问用户要订购的商品数量,然后当用户向您提交页面时,使用$_SESSION
将表单数据保存到数组中。显示的下一页将提供项目文本元素供用户完成。
你基本上想要:
$_POST['id_item']
$_SESSION
id_item
循环for
生成项目输入
$_SESSION
检索以前的表单数据,与新项目信息结合(个人注意:Javascript会让这更好更容易)
答案 1 :(得分:0)
如果没有脚本语言,我不相信这是可能的。我想你可以使用更简单的内联&#39;用于显示后续元素的脚本,例如:
<div id="item1div">
Item 1:<input name="item1" value="" onFocus="getElementById('item2div').style.display='block';">
</div>
<div id="item2div" style="display:none;">
Item 2:<input name="item2" value="" onFocus="getElementById('item3div').style.display='block';">
</div>
...
<div id="item10div" style="display:none;">
Item 10: <input name="item10" value="">
</div>
这会在选择上一个项目时显示每个项目。它有自己的问题,它是你所要求的真正简化,但它可以实现你的基本目标,而无需在JS中编写函数。
答案 2 :(得分:0)
当我说使用session + PHP时,这就是我所指的。你可以用PHP完成所有这些,虽然javascript是最佳的。我没有提供一种删除会话输入的方法,但是使用其他表单元素就足够了。另外,我没有在重新加载时做任何回显值。如果您真的不想使用javascript,这只是一个选项:
<?php
// Put at top of page
session_start();
// Also somewhere at top of page
// Check post empty and assign post to a session for continual use
if(!empty($_POST)) {
$_SESSION['form'] = $_POST;
} ?>
<form action="" method="post" class="smart-green">
<h1>Contract Form
<span>Please fill all the texts in the fields.</span>
</h1>
<label>
<span>Client:</span>
<input type="text" name="client" placeholder="Your Client Name" />
</label>
<label>
<span>Your Name (Salesman):</span>
<input type="text" name="salesman" placeholder="Name" />
</label>
<label>
<span>Construction Name:</span>
<input type="text" name="construction" placeholder="Construction Name" />
</label>
<label>
<span>City:</span>
<input type="text" name="city" placeholder="City" />
</label>
<label>
<span>Items:</span>
<input type="text" name="id_item" placeholder="Item" />
</label>
<label for="new">Add Fields</label>
<select name="new" id="new">
<option value="">Select</option>
<option value="1">Add 1</option>
<option value="2">Add 2</option>
<option value="3">Add 3</option>
<option value="4">Add 4</option>
</select>
<?php
// This checks if new has been posted
if(isset($_POST['new']) && $_POST['new'] >= 1) {
// Check if there are inputs in the queue
$count = (isset($_SESSION['form']['new_input']) && !empty($_SESSION['form']['new_input']))? count($_SESSION['form']['new_input']):1;
// Loop
for($i = $count; $i <= $_POST['new']+$count; $i++) { ?>
<input type="text" name="new_input[<?php echo $i; ?>]" id="new-<?php echo $i; ?>" />
<?php }
}
// Loop through sessioned inputs
if(isset($_SESSION['form']['new_input'])) {
$i = 0;
foreach($_SESSION['form']['new_input'] as $key => $value) { ?>
<input type="text" name="new_input[<?php echo $key; ?>]" id="new-<?php echo $key; ?>" value="<?php echo strip_tags($value); ?>" />
<?php }
} ?>
<button name="add_new" value="new">Add New</button>
<label>
<span> </span>
<input type="button" class="button" value="Send" />
</label>
</form>