我使用JavaScript创建了一个文本框组,即单击“添加”按钮时,新的文本框将添加到页面中。
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<label>Track #'+ counter + ' : </label>' +
'<input type="text" name="textbox1[]' + counter + '" value="" >' +
'<input type="text" name="textbox2[]' + counter + '" value="" >' );
newTextBoxDiv.appendTo("#TextBoxesGroup");
我的PHP页面的DIV类是..
<div id='TextBoxesGroup'> <div id="TextBoxDiv1"> <label>Track #1 : </label>
<input name="textbox1[]" type='textbox' ><input name="textbox2[]" type='textbox'>
</div>
</div>
现在我想创建一个数组,以便轻松地将这组文本框的值输入到数据库中。而不是使用多维数组,我想使用单个数组,因此textbox1#
集的值存储为数组的关键,textbox2#
存储的值存储为数组的相应值。
答案 0 :(得分:2)
当您通过POST提交表单时,它不会创建输入字段的多维数组。相反,它使用字段的name属性作为$ _POST数组中的键。
因此,当您制作文本框时,请将textbox2设为数组名称,以便您可以拥有多个字段,如下所示:
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<label>Track #'+ counter + ' : </label>' +
'<input type="text" name="textbox1[]' + counter + '" id="textbox1' + counter + '" value="" >' +
'<input type="text" name="textbox2[]' + counter + '" id="textbox2' + counter + '" value="" >' );
newTextBoxDiv.appendTo("#TextBoxesGroup");
然后您可以使用 $ _ POST ['textbox1'] 获取密钥,这些值将存储在 $ _ POST ['textbox2'] 中。
然后使用它,假设您想获得第一个textbox1 / textbox2对,您可以使用 $ _ POST ['textbox1'] [0] 和 $ _ POST来访问该值[ 'TextBox2中'] [] 强>
要循环遍历两个数组并提取所有值(假设textbox1和textbox2字段的数量相同),您可以执行以下操作:
$inputs;
$length = count($_POST['textbox1']);
for($i=0; $i< $length; $i++){
$inputs[$_POST['textbox1'][$i]] = $_POST['textbox2'][$i];
}
答案 1 :(得分:0)
我认为你不能直接这样做。您必须处理HTML将表单传递给PHP的方式。您不应对所有文本框使用相同的名称。我认为最简单的方法是使用'textbox1 []'和'textbox2 []'作为名称,这样你就可以从所有文本框中获得一个数组。然后,使用循环,您可以使用textbox1和textbox2数组以您希望的方式构建新数组。
答案 2 :(得分:0)
我制作了一些示例代码,向您展示如何使用复选框的不同属性将键映射到复选框数组中的值:
因此,您可以控制映射到哪个键的值...如果您希望将某个内容作为值插入复选框数组中的键,请执行以下操作:
<input type="checkbox" id="somewhat1" name="checkboxes[key1]" value="value1"/>
其中“checkboxes”将是一个包含key1的值为1的数组
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
echo print_r($_POST) . "<br/>";
$checkboxvalues = $_POST['checkboxes'];
echo "key1 = " . $checkboxvalues["key1"] . "<br/>";
?>
<form action="index.php" method="post">
asd1<input type="checkbox" id="somewhat1" name="checkboxes[key1]" value="value1"/><br/>
asd2<input type="checkbox" id="somewhat2" name="checkboxes[key2]" value="value2"/><br/>
asd3<input type="checkbox" id="somewhat3" name="checkboxes[key3]" value="value3"/><br/>
<input type="submit" value="ok">
</form>
</body>
答案 3 :(得分:0)
(文档)$。就绪(函数(){
var counter = 5;
$("#addButton").click(function () {
if(counter>50){
alert("Only 50 textboxes allow");
return false;
}
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<div class="form-group" id="TextBoxesGroup" ><div class="col-md-5" id="TextBoxDiv'+ counter + '"><input type="text" name="Features['+ counter + ']" id="textbox' + counter + '" placeholder="Features type" class="form-control " value="" ></div> ' +
'<div class="col-md-6" id="TextBoxDiv'+ counter + '"><input type="text" name="Features_v[' + counter +
']" id="textbox' + counter + '" <input type="textbox" placeholder="Features description" class="form-control " value="" ></div>'+ '<div class="col-md-1" id="TextBoxDiv'+ counter + '"><i class="fa fa-trash btn" id="removeButton" ></i></div></div>');
newTextBoxDiv.appendTo("#TextBoxesGroup");
counter++;
});
});