2009-12-08 57 views
2

我有一個添加到購物籃problem.Some產品有像顏色/大小的選項。我繪製顏色/大小的選擇框和數量的輸入。jquery select array

<select name="productOption[1234][color]"> 
<select name="productOption[1234][size]"> 
<input type="text" name="productOption[1234][qty]"> 

所以選項是一個數組,其中包含每個產品的值。在abov示例中,產品的選項爲id = 1234。

我試圖

var productOptions=$("name^='productOption["+productID+"]'").val(); 

期望得到的對於給定的productID,但它不工作的選項的數組。 這些選項是動態的一些產品可以有額外的選項

任何人都可以幫助我的選擇器,以檢索給定productID的值的數組,並將它們傳遞給serverSide。

感謝

回答

9

我覺得這是你想要假設你使用jQuery的東西。

<script type="text/javascript"> 
function getProductDetails(product_id) { 
    var product_details = []; 
    jQuery('[name*="productOption[' + product_id + ']"]').each(function() { 
     var option = jQuery(this); 
     var type = option.attr('name').match(/productOption\[\d+\]\[(\w+)\]/); 
     product_details[ type[1] ] = option.val(); 
    }); 

    return product_details; 
} 
</script> 

這將返回一個關聯的數組。所以,你可以做......與 '\ \'(無空格)

var details = getProductDetails(1234); 
alert(details['qty']); 
+1

+1爲優秀的答案。 – Fenton 2009-12-08 08:11:18

+0

@索尼感謝! – William 2009-12-08 08:13:47

4

你忘了屬性選擇器([ATTR^=值]

var productOptions=$("[name^='productOption["+productID+"]']").val(); 
+0

+1爲察覺丟失了很多方括號,但是這個語句只會給你第一個項的值,因爲val()方法不會連接多個值。 – Fenton 2009-12-08 08:07:56

1

景觀內部支架 - 更容易

$('input[name=items\\[\\]]') 

這裏看到jquery - select all checkboxes with js array name

+1

首先,由於OP已將文本括在引號中,所以您的技巧對此問題沒有幫助。其次,你正在回答近2年前提出的一個問題,並且已經有一個被接受的答案。第三,與簡單使用匹配的qoute相比,如何在代碼中添加非直觀的'\\'更容易? – bPratik 2012-09-22 18:41:26