在提交点击上更改隐藏字段值

时间:2013-01-12 18:50:56

标签: php javascript

我有一个包含多个项目的表单,并且每个项目都有一个id,在提交时我希望能够获取被点击的项目的ID - 我尝试过使用js,例如:

<form method="post" action="add_item_cart.php">
    <input type="hidden" id="item_id" name="item_id">
    <input name="submit_item" id="btn_sub" onclick="document.getElementById('item_id').value = <?php echo '3'; ?>" type="submit" value="Add">
</form>

我希望能够在 add_item_cart.php 上获取此值:$item_id = $_POST["item_id"];,但这似乎不起作用。

这是我的js语法的问题还是我的逻辑不可能解决这个问题?它是在更改值之前提交的吗?

编辑: 让我们看看我是否可以更好地解释自己,我想动态分配该隐藏值,想象我的表单有3个提交按钮(每个项目显示一个)。根据点击的那个,我想将项目的ID传递给我的隐藏字段,所以如果我点击button1 - $ _POST [“item_id”] = 1,button2 - $ _POST [“item_id”] = 2 ...等

这是我的实际表格(非简化示例)

<form method="post" action="add_item_cart.php">
                <table style="width:600px">
                    <tr>
                        <?php foreach ($items as $item): ?>
                            <td>
                        <center>
                            <span style="font-size:20px"><?php echo $item["item_name"] ?></span><br/>
                            €<?php echo $item["price"] ?><br/>
                            Quantidade: <input type="text" value="1" style="width:30px"><br/>
                            <input type="hidden" id="item_id" name="item_id">
                            <input name="submit_item" id="btn_sub" onclick="document.getElementById('item_id').value = <?php echo $item["id"]; ?>" type="submit" value="Adicionar">
                        </center>
                        </td>
                    <?php endforeach; ?>
                    </tr>
                </table> 
            </form>

2 个答案:

答案 0 :(得分:0)

<强>更新

使用普通按钮代替提交按钮,并使用javascript提交表单。

<form method="post" name="f1" action="add_item_cart.php">
<input type="hidden" id="item_id" name="item_id">
<input name="submit_item" id="btn_sub" onclick="document.getElementById('item_id').value = <?php echo '3'; ?>; document.f1.submit();" type="button" value="Add">

答案 1 :(得分:0)

当您的表单发布并且您想要首先在add_item_cart.php上收集item_id值时,您需要实际为id分配一个值,如(假设item_id是一个php变量)。 id仅用于设置css编辑而不是值...

<input type="hidden" id="item_id" value="<?php echo $item_id; ?>" name="item_id">

您不能为该值设置id ='',因为'value'是值。

然后您可以使用以下内容在其他页面上获取该值:

<?php
if(isset($_POST['item_id'])){
$item_id = $_POST['item_id'];
}
?>

如果您想在发布后编辑变量,具体取决于您点击的按钮,可以尝试。

<input name="submit_item1" id="btn_sub" name="button1" type="submit" value="Add">
<input name="submit_item2" id="btn_sub" name="button1" type="submit" value="Add">
<input name="submit_item3" id="btn_sub" name="button1" type="submit" value="Add">

然后,您可以在页面顶部执行此操作。

<?php
if(isset($_POST['submit_item1'])){
$item_id = 1;
}
if(isset($_POST['submit_item2'])){
$item_id = 2;
}
if(isset($_POST['submit_item3'])){
$item_id = 3;
}
?>

如果您要从一系列项目中创建表单,您可以执行类似的操作(假设您以某种方式具有与这些项目关联的ID;我需要了解有关您如何制作项目列表的更多信息。但它会通常这样做。

<?php
foreach($item_array as $item){
?>
<form method="post" action="add_item_cart.php">
    <input type="hidden" id="item_id" name="item_id" value="<?php echo $item['id']; ?>">
    <input name="submit_item" id="btn_sub" type="submit" value="Add">
</form>

<?php
}
?>

然后在你的页面顶部你可以得到$ _POST ['item_id']并且因为该值是动态设置的,所以你不需要任何条件,你可以获得该值并运行任何查询。