获取上面所选选项的值


Get value of selected option above

我正试图制作一个订单页面,通过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++; ?>