我正在为一家餐馆建立一个网站,并使用php和mysql动态地在表单中构建一个表来显示每个菜单项。每行都有一个数量输入,后跟项目和描述等,并以" Add to Order"按钮。我需要做的是当按下按钮时,将项目的数量和ID发送到会话变量。我已经看到了使用数组输入id的建议,我猜不知道如何处理它们。
$d=date('N');
$sql2="CALL SP_GET_MENU_ITEM('entree', '$d');";
$result=mysql_query($sql2, $conn2);
if(!$result)
die(mysql_error());
$count=0;
while($row=mysql_fetch_assoc($result)){
$n=$row['itemName'];
$de=$row['description'];
$i=$row['ingredient'];
$p=$row['price'];
$dr=$row['dietRestrict'];
$f=$row['path'];
/*$pic="CALL SP_GET_MENU_IMAGE('$n');";
$picTry=mysql_query($pic, $conn);
$picResult=mysql_fetch_assoc($picTry);
$f=$picTry['path'];*/
print '<tr><td>
<input type="number" min="1" name="quantity" style="width:40px;" /></td>
<td class="itemDes">';
print "<h2>".$n."</h2>";
print "<img src='../admin/menu/".$f."' alt='foodPic'></td>";
print "</td><td><p>description: ".$de."<br>ingredients: ".$i."</td><td>".$dr."</td><td>".$p."</td></p></td><td>
<input type='button' onclick= 'doit()' value='Add to Order' class='btn'/>
}
它现在正确填充表格,并且当按下任何按钮时,函数doit()[只调用警报]正确调用。我以为我必须将变量传递给它<onclick="doit(quantity.value))">
所以我怎么能让quantity.value
工作?
答案 0 :(得分:0)
你可以使用&#39;这个&#39;要访问当前元素,所以如果您使用doit(this.value),this.value将等于“添加到订单”
从这里,您可以使用dom方法在相关上下文中查找元素。从您的代码中很难说清楚,因为我没有全面了解HTML,但您可以尝试这样做:
doit(this.parentElement.parentElement.firstElementChild.firstElementChild.value)
这得到你的按钮的容器,这是一个td,然后获取它的容器,这是一个tr,然后得到它的第一个子元素,这是该tr包含的第一个td,然后作为数量输入的第一个孩子的价值。 (你的头在旋转吗?)
答案 1 :(得分:0)
试试这个。由于您是动态创建元素,因此以下表达式将在dom渲染后在按钮上注册单击事件处理程序。这样您就不需要在dom中注册click。
$(document).on("click","input:button",function()
{
alert($("input:text[name=quantity]").val());
});