Javascript 在表单中动态添加输入(在PHP中无法获取值)
我有一个巨大的表格,里面有一张桌子。当用户按下某个按钮并尝试在PHP中捕获所有这些值时,我使用jQuery添加该表的行 但是除了表的第一行,我不能得到其他值 得到 未定义索引:分类#2 当我试图通过Javascript 在表单中动态添加输入(在PHP中无法获取值),javascript,php,jquery,html,Javascript,Php,Jquery,Html,我有一个巨大的表格,里面有一张桌子。当用户按下某个按钮并尝试在PHP中捕获所有这些值时,我使用jQuery添加该表的行 但是除了表的第一行,我不能得到其他值 得到 未定义索引:分类#2 当我试图通过$\u POST['categorie#2'] HTML如下所示: <form> ...[some working inputs] <table id="matos" class="table table-responsive synthese">
$\u POST['categorie#2']
HTML如下所示:
<form>
...[some working inputs]
<table id="matos" class="table table-responsive synthese">
<thead>
<tr>
<th>Matériel</th>
<th>Fournisseur</th>
<th>Numéro de série</th>
<th>Catégorie</th>
<th>Description</th>
<th>Date d'achat</th>
<th>Etat</th>
</tr>
</thead>
<tbody>
<tr class="" id="ligne#1">
<td><input type="text" name="materiel#1" id="materiel#1" class="form-control" value=""></td>
<td>
<select name="fournisseur#1" id="fournisseur#1" class="form-control" value="">
<?php
$list = listing_fournisseurs();
foreach ($list as $key => $value)
{
echo '<option value='.$key.'>'.$value.'</option>';
}
?>
</select>
</td>
<td><input type="text" name="num_serie#1" id="num_serie#1" class="form-control" value=""></td>
<td>
<select name="categorie#1" id="categorie#1" class="form-control" value="">
<?php
$list = listing_categories();
foreach ($list as $key => $value) {
echo ' <option value='.$key.'>'.$value.'</option>';
}
?>
</select>
</td>
<td><input type="text" name="description_materiel#1" id="description_materiel#1" class="form-control" value=""></td>
<td><input type="text" name="buy_date#1" id="buy_date#1" class="date form-control" value=""></td>
<td>
<select name="etat#1" id="etat#1" class="form-control" value="">
<?php
$list = listing_etats();
foreach ($list as $key => $value) {
echo ' <option value='.$key.'>'.$value.'</option>';
}
?>
</select>
</td>
</tr>
</tbody>
</table>
我读过一些问题,如果表格中没有表格,表格就不起作用。。。但就我而言,他们是。。。怎么了?var opt_fourniseurs='ggdd';
var opt_fournisseurs = '<option value="gg">gg</option><option value="dd">dd</option>';
var opt_categories = '<option value="ss">ss</option><option value="aa">aa</option>';
var opt_states = '<option value="ww">ww</option><option value="ee">ee</option>';
var num= parseInt($('#matos tr:last').prop("id").split('#')[1])+1;
$('#matos tr:last').after('<tr id="ligne#'+num+'">'+
'<td><input type="text" name="materiel#'+num+'" id="materiel#'+num+'" class="form-control" value=""></td>'+
'<td><select name="fournisseur#'+num+'" id="fournisseur#'+num+'" class="form-control" value="">'+
opt_fournisseurs+
'</select></td>'+
'<td><input type="text" name="num_serie#'+num+'" id="num_serie#'+num+'" class="form-control" value=""></td>'+
'<td><select name="categorie#'+num+'" id="categorie#'+num+'" class="form-control" value="">'+
opt_categories+
'</select></td><td><input type="text" name="description_materiel#'+num+'" id="description_materiel#'+num+'" class="form-control" value=""></td>'+
'<td><input type="text" name="buy_date#'+num+'" id="buy_date#'+num+'" class="date form-control" value=""></td>'+
'<td><select name="etat#1" id="etat#1" class="form-control" value="">'+
opt_states+
'</select></td></tr>');
$('#nbLignes').val(num);
var opt_categories='ssaa';
var opt_states='wwee';
var num=parseInt($('#matos tr:last').prop(“id”).split('#')[1])+1;
$('matos tr:last')。在('+
''+
''+
福尼塞尔斯酒店+
''+
''+
''+
opt_类别+
''+
''+
''+
opt_州+
'');
$('#nbLignes').val(num);
马特里尔
福尼瑟
纳梅罗·德·塞里
凯蒂戈里酒店
描述
大枣
埃塔特
一
二
1.
2.
1a
2a
这是根据您提供的代码创建的示例,它对我有用。我的坏消息!我把我的DOM结构搞砸了。。。 你不应该在你的
结束之前关闭一个div,这就是为什么
不起作用:
<div id="some_div">
<form>
[Some inputs...]
</div><!-- /some_div -->
</form>
<div id="some_div">
<form>
[Some inputs...]
</form>
</div><!-- /some_div -->
[一些投入…]
应该有效:
<div id="some_div">
<form>
[Some inputs...]
</div><!-- /some_div -->
</form>
<div id="some_div">
<form>
[Some inputs...]
</form>
</div><!-- /some_div -->
[一些投入…]
看起来很明显,但当您拥有非常大的DOM时就不是了;) 如果您使用此命名约定而不是
,您的生活将变得更加轻松
这样,您将在PHP端的数组中获得变量,这使得遍历数据变得更加容易
例如:
如果您检查jquery添加的装备名称输入框,您会得到什么?当您转储(var\u dump()
)时会发生什么?你看到默认情况下没有的任何其他类别或值吗?打印你的$\u帖子,你就会知道怎么了。是的,我有所有的“#1”,但我得到了错误未定义索引:[nameOfInput]#NumberOfLine
,用于其他行。。。好像数据不会send@Seba99其优点是,您不必跟踪数字(分类1
,装备2
)等。它只需将所有具有该名称的内容转换为具有索引的数组。看看这个答案,可以得到一个清晰的用法示例:嗯,它对我也有用。。。x) 但是我的DOM有点复杂。。。我想发布我的全部源代码,但是有没有一种方法可以在一些JS操作(比如tab中的新行)之后获取源代码,因为使用CTRL+U我只获得JS操作之前的内容。。。通过chrome inspector,我得到了很多::after
或::after
我应该发布我的DOM吗?是的,这是@Bono在文章中说的,但这不是真正的问题,不管怎样,好的建议:)
<?php
foreach($_POST['categories'] as $num => $value){
}
?>