javascript - 如何使用表从动态构建的表单中捕获

标签 javascript php jquery mysql

我正在为餐厅构建一个站点,并使用 php 和 mysql 在表单中动态构建一个表来显示每个菜单项。每行都有一个数量输入,然后是项目和描述等,最后以“添加到订单”按钮结束。我需要做的是在按下按钮时,将商品的数量和 ID 发送到 session 变量。我看到过使用数组作为输入 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上类??

最佳答案

您可以使用“this”访问当前元素,因此如果您使用 doit(this.value),this.value 将等于“Add to Order”

从这里您可以使用 dom 方法在相关上下文中查找元素。很难从您的代码中判断出来,因为我没有 HTML 的全貌,但您可以试试这个:

doit(this.parentElement.parentElement.firstElementChild.firstElementChild.value)

这会得到你的按钮的容器,它是一个 td,然后得到它的容器,它是一个 tr,然后得到它的第一个子元素,它是那个 tr 包含的第一个 td,然后输入量的第一个子项的值。 (你的头在旋转吗?)

关于javascript - 如何使用表从动态构建的表单中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33655619/

相关文章:

javascript - Mongodb连接服务器失败错误

javascript - React onchange 事件 : this. setState() 未设置状态?

javascript - Vuejs : Can't pass object to web component using v-bind

php - MySQL 日期比较返回 null

javascript - 使用 CSS 类动态显示 select 中的数据

javascript - 根据属性过滤对象数组

php - SAML 和 PHP 入门

php - JQuery - 复选框未打开

jquery - 将灰度样式应用于图像,直到它滚动到 View 中心

jQuery 用户界面 : draggable not revert to original position