2010-12-15 107 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