2013-10-30 84 views
0

我有一個項目列表。我希望能夠點擊一個按鈕將項目添加到mySQL。在測試時,我只需使用conf box來顯示ID。麻煩是我無法讓它工作。我是jQuery和AJAX的新手。我認爲這很容易。但經過一天早上從這裏嘗試了一堆不同的方法後,我想我會問我的確切代碼。jQuery SelectButton旁邊的隱藏輸入值

<page loaded with> 
wp_enqueue_script('jquery'); 
wp_enqueue_script('jquery-ui-core'); 
wp_enqueue_script('jquery-ui-tabs'); 
wp_enqueue_script('jquery-ui-autocomplete'); 

<script> 
function addCharItem() { 
    var itemID = $(this).closest("td").find('input[name="itemID"]').val(); //this is close (I think) but message is showing as undefined. 
// var itemID = $("input").siblings(".itemID").val() //gets first ID in table only 
    confirm ('The item ID is ' + itemID); 
//adding ajax and other stuff later. 
} 
</script> 

<html> 
... 
<tr> 
    <td colspan="5"><dl><dt>Backpack (empty)</dt><dd></dd></dl></td> 
    <td><input name="hdnItemID" type="hidden" value="742"/> 
     <input name="btnAddItem" type="button" id="btnAddItem" value="+" onclick="addCharItem()"/></td> 
    <td><input name="btnBuyItem" type="button" id="btnBuyItem" value="$" /></td> 
</tr> 
... 
</html> 

這是全部從Wordpress中的模板php頁面構建而成。我不認爲這些東西有什麼奇怪之處。但如果讓我知道你還有什麼需要的。感謝您的幫助和建議。我知道我必須錯過一些小小的東西,我只是不知道這個東西足夠好,還不知道是什麼。

+0

到目前爲止沒有運氣。我添加了以下內容:\t var thisValue = $(this); console.log(thisValue);看看這是什麼選擇。它在控制檯中返回:[Window,jquery:「1.9.1」,constructor:function,init:function,selector:「」,size:function ...] 它不應該有選擇器嗎?它顯示「」。也許這就是問題所在。爲什麼'this'不能抓住當前的元素呢? – user1518699

回答

0

因此,似乎出於某種原因,上面的代碼沒有被抓HTML元素。所以相反,我實現了jQuery按鈕。

<script> 
    $(function() { 
    $("input[type=submit], a, button") 
     .button() 
     .click(function(event) { 
     event.preventDefault(); 
     var thisValue = $(this).val(); //to distinguish buttons 
     console.log(thisValue); 
     var itemID = $(this).prev('input[id="hdnItemID"]').val() 
     confirm ('The item ID is ' + itemID); 
      //do other stuff 
     }); 
    }); 
</script> 

<html changes> 
... 
<tr> 
    <td colspan="5"><dl><dt>Backpack (empty)</dt><dd></dd></dl></td> 
    <td><input class="itemID" id="hdnItemID" type="hidden" value="742"/> 
    <input type="submit" value="+" /></td> 
    <td><input class="itemID" id="hdnItemID" type="hidden" value="742"/> 
    <input type="submit" value="$" /></td></tr> 
... 
</html> 

我希望我能告訴你爲什麼它不起作用。看來,我嘗試過許多不同的方式,本該工作。上面的建議也應該起作用。如果有人知道這是爲什麼,請讓我知道。我,我確信還有其他人,很想知道這個「疑難雜症」問題。感謝所有提示!

1

您可以使用.siblings(selector)

$(this).siblings('input[name="hdnItemID"]').val() 

$(this).prev('input[name="hdnItemID"]').val() 
1

使用hdnItemID您的姓名,不itemID

$(this).closest("td").find('input[name="hdnItemID"]').val();