【问题标题】:How to "match" html hidden input with a chosen radio input in php?如何将 html 隐藏输入与 php 中选择的无线电输入“匹配”?
【发布时间】:2022-07-30 01:12:36
【问题描述】:

我想$_POST 所选单选按钮的 ID。问题是我的单选按钮的值不是ID,而是字符串标题。

foreach($products as $product) {
    echo '<input required type="radio" id="'.$product->ID.'" name="product" value="'.$product->post_title.'">';
    echo '<label for="'.$product->ID.'">'.$product->post_title.'</label><br>'; 
    echo '<input type="hidden" name="postid" value="'.$product->ID.'">';   
} 

有没有办法可以“匹配”该隐藏字段,以便我可以访问$_POST 中的正确值? 如果我只是做$_POST["postid"] 它不起作用,因为它只是从foreach 循环中获取最后一条记录

【问题讨论】:

  • 您不应该有重复的 ID。不要为单选按钮和隐藏输入使用相同的 ID。
  • 谢谢。让我删除它!
  • 您为什么不直接更改单选按钮以在值中包含产品 ID?那么你就不需要隐藏输入了。
  • 隐藏的输入不应该在循环中。您只需要其中一个来保存所选单选按钮的 ID。您需要使用 JavaScript 来执行此操作。
  • "I sql 将表单数据插入到单独的表中。" - 那又怎样,这并不意味着您不能根据产品 ID 查询产品名称首先在这一点上。如果您不希望我能够提交完全任意的产品名称,您应该这样做。您的产品 #15 可能在您的产品表中具有名称“芭比娃娃” - 但如果我在提交表单之前将字段值操作为“Funky Sex Robot”,则可能会导致尴尬的情况,具体取决于您对数据稍后...

标签: php html forms


【解决方案1】:

将隐藏的输入从循环中取出,因为表单中只需要其中一个,而不是每个单选按钮单独的一个。

foreach($products as $product) {
    echo '<input required type="radio" id="'.$product->ID.'" name="product" value="'.$product->post_title.'">';
    echo '<label for="'.$product->ID.'">'.$product->post_title.'</label><br>';  
} 
echo '<input type="hidden" id="productid" name="postid" value="'.$product->ID.'">';  

使用 JavaScript 将单选按钮的 ID 复制到隐藏的输入。

const hidden_productid = document.querySelector("#productid");
document.querySelectorAll("input[type='radio'][name='product']").forEach(button => 
    button.addEventListener("click", () => hidden_productid.value = button.id));

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 2015-12-20
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多