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

时间:2015-11-11 16:53:04

标签: javascript php jquery mysql

我正在为一家餐馆建立一个网站,并使用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工作?

2 个答案:

答案 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());
});