方法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>