2015-11-11 43 views
1

我正在爲一家餐廳構建網站,並使用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'/> 
} 

它填充表正確地,現在,和功能度特()[其只是調用警報]任一按鈕被按壓時正確調用。我想我必須通過變量,即<onclick="doit(quantity.value))">那麼我怎麼會得到quantity.value工作?

+0

嘗試:'的onclick = 「返回DOIT(的document.getElementById(」' –

+0

威爾返回,只是該行的值項目Id 「)值()。)」?現在每個數量輸入都會有相同的ID,我認爲會影響它? – sgriffin

+0

請嘗試:onclick =「doit($(」input [name ='quantity']「).val())」這應該是有效的,請問我是否知道它是否有效 –

回答

0

你可以使用「這個」來訪問當前元素,所以如果你使用DOIT(THIS.VALUE),THIS.VALUE等於「添加到訂單」

從這裏你可以使用DOM方法在相關的上下文中找到元素。很難從你的代碼,告訴我沒有HTML的全貌,但你可以試試這個:

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

這得到您的按鈕,這是TD的容器,然後得到那個容器是一個tr,然後獲取該容器的第一個子元素,這是tr包含的第一個td,然後是該容器輸入的第一個子容器的值。 (你的頭部轉動了嗎?)

+0

我遵循,但它返回一個未定義的值。 我的doit函數如下 function doit(number){alert('clicked'+ number)}; 並獲得「點擊未定義」作爲提醒 – sgriffin

+0

它您可能需要使用parentElement和firstChild的不同組合,具體取決於您的HTML,是否可以爲您的問題添加完整的表格? – denodster

+0

好吧,我開始通過刪除不必要的換行符來壓縮我的代碼,並且此方法開始工作。猜猜我應該更加小心我的編碼風格。非常感謝你 – sgriffin

0

試試這個。由於您正在動態創建元素,因此以下表達式會在dom渲染後在按鈕上註冊單擊事件處理函數。這樣你就不需要在dom中註冊點擊。

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