我正试图制作一个订单页面,通过javascript添加多个产品。PHP/HTML代码为:
<?php $module_row = 0; ?>
<tbody id="module-row<?php echo $module_row; ?>">
<tr>
<td><select name="prod[]"><?php foreach ($products as $product) { ?><option value="<?php echo $product['ID']; ?>"><?php echo $product['name']; ?></option></td><td><a onClick="addProd();">Add New</a></td>
</tr></tbody>
<?php $module_row++; ?>
我的Javascript代码是:
var module_row = <?php echo $module_row; ?>;
function addProd() {
html = '<tbody id="module-row' + module_row + '">';
html += ' <tr>';
html += ' <td class="left"><select name="prod[]">';
<?php foreach ($products as $product) { ?>
html += ' <option value="<?php echo $product['ID']; ?>"><?php echo $product['name']; ?></option>';
<?php } ?>
html += ' </select></td></tr></tbody>';
$('#module tfoot').before(html);
module_row++;
现在我想在后面添加的行中显示products数组,以显示上面所选产品之外的products下拉列表。我已经查看了很多论坛,但找不到一个解决方案来获得上面选择的下拉列表值。你知道吗?
对于启用和禁用选择选项,类似JS fiddle的东西可能会有所帮助。请注意,它禁用了在多个选择框中选择相同内容的可能性。
至于您发布的代码示例,foreach后面缺少一个PHP右括号(}
)。
此外,您可以使用<?= $var ?>
作为<?php echo $var ?>
的可读性更强的快捷方式
试试这个:
<?php
$products = [
[
'ID' => 123,
'name' => 'product1',
],
[
'ID' => 456,
'name' => 'product2',
],
];
$module_row = 0;
?>
<tbody id="module-row <?= $module_row; ?>">
<tr>
<td>
<select name="prod[]">
<?php foreach ($products as $product) { ?>
<option value="<?= $product['ID']; ?>">
<?= $product['name']; ?>
</option>
<?php } ?>
</td>
<td>
<a onClick="addProd();">Add New</a>]
</td>
</tr>
</tbody>
<?php $module_row++; ?>