2010-12-15 110 views
0

的點擊選擇多個列表項的值我有一個類似的列表(含鋰的任意數量):使用jQuery按鈕

<ul> 

<li> 
    <div class="box"> 
    <table> 
    <tr> 
    <td>Product 1</td> 
    <td><input type="hidden" class="hiddenid" value="5" /></td> 
    <td><input type="checkbox" value="yes" /></td> 
    </tr> 
    </table> 
    </div> 
</li> 


<li> 
    <div class="box"> 
    <table> 
    <tr> 
    <td>Product 2</td> 
    <td><input type="hidden" class="hiddenid" value="6" /></td> 
    <td><input type="checkbox" value="yes" /></td> 
    </tr> 
    </table> 
    </div> 
</li> 


</ul> 

<input type="submit" id="submit" /> 

,我需要通過每一個項目使用jQuery循環,一旦點擊了#submit(最終我會將這個字符串傳遞給一個php頁面和一個數據庫),就可以通過一個複選框收集每個項目的#hiddenid值。

這是我嘗試在JQuery的,但是是相對初學者(即小白)我很失落......

<script> 
$(document).ready(function() { 

    $(".arrow").click(function() { 

    var id = $.each("#stockyesno:checked").closest(".box").find(".hiddenid").val(); 

    alert(id); 

    }); 


}); 
</script> 

我希望有一種方法來糾正我的ID的穿越變量,所以它不會更復雜...

我簡化了這個問題,但我敢肯定,如果這可以回答我可以縮放答案我更復雜的代碼。

感謝您的幫助!

+2

一張桌子,在一個李內部的DIV內?爲什麼? – 2010-12-15 16:17:10

+0

什麼是'.card'? – SLaks 2010-12-15 16:19:12

+0

@Matt Ball這是翻譯錯誤,我向你保證:) – Alex 2010-12-15 16:20:14

回答

2

你試圖寫

var ids = $(".stockyesno:checked").map(function() { 
    return $(this).closest(".box").find(".hiddenid").val(); 
}).get(); 
var idString = ids.join(','); 

該代碼使用jQuery的正常通話,以獲得選中的元素,然後調用map method到複選框集轉換成一組值的字符串。
然後它調用get將字符串的jQuery對象轉換爲普通數組。
最後,它調用Javascript join方法將數組轉換爲單個逗號分隔的字符串。

+0

這是使用一個ID選擇器來獲取一組*元素來循環?:)(與'#hiddenid'相同,應該是'.hiddenid') – 2010-12-15 16:22:56

+0

@Nick:當我編寫答案時,那些是ID的,而不是類。固定。 – SLaks 2010-12-15 16:24:11

+0

抱歉編輯跺腳。 – 2010-12-15 16:25:16

0

考慮這樣的結構:

<ul> 
    <li> 
     Product 1 
     <input type="hidden" class="hiddenid" value="5" /> 
     <input type="checkbox" value="yes" /> 
    </li> 
    <li> 
     Product 2 
     <input type="hidden" class="hiddenid" value="6" /> 
     <input type="checkbox" value="yes" /> 
    </li> 
</ul> 
+0

感謝提示Sime,我正在開發一些將需要表格結構的東西,我應該更清楚。 – Alex 2010-12-15 16:33:36

0

如果你試圖確定哪些產品的複選框被選中,也有更簡單的方法。

例如,如果您的複選框領域是這樣的:

<input type="checkbox" name="product_id_1" id="product[1]" value="yes" /> 
<input type="checkbox" name="product_id_2" id="product[2]" value="yes" /> 
<input type="checkbox" name="product_id_3" id="product[3]" value="yes" /> 

你會那麼可以在提交給服務器使用的名稱和它們的值。例如,如果您選擇了第一個和最後一個複選框,則可以使用URL參數product_id_1 = yes和product_id_3 = yes來處理。

簡單仍然:

<input type="checkbox" name="product_id" value="1" /> 
<input type="checkbox" name="product_id" value="2" /> 
<input type="checkbox" name="product_id" value="3" /> 

當所有這些複選框被選中,則PRODUCT_ID URL參數的值將是1,2,3。如果僅選擇2和3,則值爲2,3。選擇第一個複選框會導致值爲1.

值得指出的是,在您的示例代碼中,您在隱藏字段上具有重複的ID。這可能是一個疏忽,因爲你試圖創建簡單的示例代碼。如果沒有,這個事實肯定會讓你的問題複雜化。元素ID必須是唯一的。

+0

只要注意到你編輯的ID屬性是類 - 所以我最後的評論不再與您的問題相關,但值得保持在我想。 – 2010-12-15 16:39:33

+0

感謝邁克爾,我沒有想到爲每個複選框分配一個唯一的ID,這將是可能的,因爲每個li都有一個,但是一旦提交被按下仍然不存在,用JQuery選擇的問題是什麼?什麼是URL參數? – Alex 2010-12-15 16:46:02

+0

據我瞭解,您使用jQuery來幫助收集您將作爲提交的一部分使用的值。如果你唯一的目標是提交選定的複選框和他們的產品ID,我的建議應該做的伎倆,而不必使用jQuery。 – 2010-12-15 17:11:42