Form Inside li and inside Loop

Form Inside li and inside Loop

本文关键字:inside Loop and li Inside Form      更新时间:2023-09-26

方法Get Not Working当我点击li

里面的按钮时,我没有收到任何值
<?php 
 for ($j = 0; $j < sizeof($subcat); $j++) {
   if($subcat[$j][3]==$cat[$i][0]){
   ?> 
   <li>
    <form name="form_producto_menu" action="" method="GET">
       <input class="btn-menu-prod" type="button"  value="<?php echo $subcat[$j][1];?>" onclick="test();">
       <input type="hidden" name="categoria" value="<?php echo $cat[$i][0]; ?>">
       <input type="hidden" name="subcategoria" value="<?php echo $subcat[$j][0]; ?>">
    </form>
  </li>
<?php 
    }
}
?>

我有麻烦的形式,如果我把表单外的循环,它工作得很好,但我需要它内的循环和标签内li,因为外面会收到长重复数组,但如果它是在里面我会得到只是按钮,我点击

这是我想要的,但不工作:

<?php 
require_once ('db/consultas.php'); 
$reg = new Consultas(); 
$cat=$reg->SelectCategoria();
$subcat=$reg->SelectSubCategoria();
if (isset($_GET['categoria'])) {
print_r($_GET); 
}
?>  
<!DOCTYPE html>
<html>
<head>
<title>Productos</title> 
<?php include 'head.php'; ?>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
</head>
<body>
<?php include 'header.php' ?>
<div class="col-lg-2 col-sm-3 " style="padding:0; margin:0;">
    <div class="contenedor-menu" style="margin-top: 100px;">
        <a href="#" class="btn-menu">Menu <i class="fa fa-bars"></i></a>
        <ul class="menu-producto ">
            <li><a href="#"><i class="icono izquierda fa fa-home" aria-hidden="true"></i>Inicio</a></li> 
            <?php
            for ($i = 0; $i < sizeof($cat); $i++) {
                ?>
                <li><a href='#'><?php echo $cat[$i][1]; ?><i class='icono derecha fa fa-chevron-down' aria-hidden='true'></i></a>
                    <ul>
                        <?php 
                        for ($j = 0; $j < sizeof($subcat); $j++) {
                            if($subcat[$j][3]==$cat[$i][0]){
                                ?> 
                                <li> 
                                    <form name="form_producto_menu" action="" method="GET">
                                        <input class="btn-menu-prod" type="button"  value="<?php echo $subcat[$j][1];?>" onclick="test();">
                                        <input type="hidden" name="categoria" value="<?php echo $cat[$i][0]; ?>">
                                        <input type="hidden" name="subcategoria" value="<?php echo $subcat[$j][0]; ?>">
                                    </form>
                                </li> <?php 
                            }
                        }
                        ?>
                    </ul>   
                </li> 
                <?php
            }
            ?> 
        </ul> 
    </div>
</div> 
<div class="container-productos-main col-lg-10 col-sm-9">
    <div class="container-productos ">
        d
    </div>
</div> 
<?php include 'footer.php'; ?> 
</body>
</html>

这工作,但不是我需要的:

<?php 
require_once ('db/consultas.php'); 
$reg = new Consultas(); 
$cat=$reg->SelectCategoria();
$subcat=$reg->SelectSubCategoria();
if (isset($_GET['categoria'])) {
print_r($_GET); 
}
?>  
<!DOCTYPE html>
<html>
<head>
<title>Productos</title> 
<?php include 'head.php'; ?>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
</head>
<body>
<form name="form_producto_menu" action="" method="GET">
<?php include 'header.php' ?>
<div class="col-lg-2 col-sm-3 " style="padding:0; margin:0;">
    <div class="contenedor-menu" style="margin-top: 100px;">
        <a href="#" class="btn-menu">Menu <i class="fa fa-bars"></i></a>
        <ul class="menu-producto ">
            <li><a href="#"><i class="icono izquierda fa fa-home" aria-hidden="true"></i>Inicio</a></li> 
            <?php
            for ($i = 0; $i < sizeof($cat); $i++) {
                ?>
                <li><a href='#'><?php echo $cat[$i][1]; ?><i class='icono derecha fa fa-chevron-down' aria-hidden='true'></i></a>
                    <ul>
                        <?php 
                        for ($j = 0; $j < sizeof($subcat); $j++) {
                            if($subcat[$j][3]==$cat[$i][0]){
                                ?> 
                                <li> 
                                        <input class="btn-menu-prod" type="button"  value="<?php echo $subcat[$j][1];?>" onclick="test();">
                                        <input type="hidden" name="categoria" value="<?php echo $cat[$i][0]; ?>">
                                        <input type="hidden" name="subcategoria" value="<?php echo $subcat[$j][0]; ?>">
                                </li> <?php 
                            }
                        }
                        ?>
                    </ul>   
                </li> 
                <?php
            }
            ?> 
        </ul> 
    </div>
</div>
</form> 
<div class="container-productos-main col-lg-10 col-sm-9">
    <div class="container-productos ">
        d
    </div>
</div> 
<?php include 'footer.php'; ?> 
</body>
</html>
这是我的JS:
function test()
{
var form = document.form_producto_menu;
alert('hola');
form.submit();
}

编辑:在这两种情况下,我从我的JS得到消息,它工作正常,但当表单在循环内提交不工作,但我仍然得到我的JS的消息。当我点击按钮时,我得到方法"get"的空值

使用事件委托代替内联click处理程序。
删除onclick属性,在ul.menu-producto上添加一个"全局"提交处理程序,更可取的是.addEventListener()(不引人注目的JavaScript原则)。

一个带有剥离版本标记的示例。
脚本部分必须在之后执行,因为ul.menu-producto元素在DOM中可用。

var wrapper = document.querySelector("ul.menu-producto");
wrapper.addEventListener("submit", function(evt) {
  evt.preventDefault(); // stop submission
  var form = evt.target,   // event.target === the form the user wanted to submit
      categorie = form.categoria.value;    // just an example
  
  console.log(categorie);
  //form.submit();
})
<ul class="menu-producto">
  <li>
    <form action="" method="GET">
      <input type="submit" value="Submit" />
      <input type="hidden" name="categoria" value="1">
    </form>
  </li>
  <li>
    <form action="" method="GET">
      <input type="submit" value="Submit" />
      <input type="hidden" name="categoria" value="2">
    </form>
  </li>
</ul>