簡體   English   中英

如何從具有表的動態構建表單中捕獲

[英]How to capture from a dynamically built form with table

我正在建立一個餐廳的網站,並在表格中使用php和mysql動態創建表格以顯示每個菜單項。 每行都有一個數量輸入,然后是項目和說明等,並以“添加到訂單”按鈕結束。 我需要做的是當按下按鈕時,將商品的數量和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工作?

您可以使用'this'訪問當前元素,因此,如果要使用doit(this.value),則this.value等於'Add to Order'

在這里,您可以使用dom方法在相關上下文中查找元素。 從您的代碼很難看出來,因為我沒有完整的HTML圖片,但是您可以嘗試這樣做:

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

這將獲取按鈕的容器(即td),然后獲取其容器(即tr),然后獲取該按鈕的第一個子元素,即該tr包含的第一個td,然后獲取值數量輸入的第一個子項。 (你的頭在旋轉嗎?)

嘗試這個。 由於您是動態創建元素的,因此以下表達式將在渲染dom之后在按鈕上注冊一個click事件處理程序。 這樣,您無需在dom中注冊點擊。

$(document).on("click","input:button",function()
{
    alert($("input:text[name=quantity]").val());
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM