JS / JQuery - 获取复选框值的麻烦

时间:2011-10-09 22:30:50

标签: javascript jquery checkbox

我在动态制作的(ASP)照片库中有很多复选框。每个复选框都有“照片”的名称,并在值中包含照片ID,如下所示:

<form name="selectForm" id="selectForm">
<input type="checkbox" onclick="selectPhoto(<%=rs1.Fields("photoID")%>)" id="checkbox_<%=rs1.Fields("photoID")%>" class="photos" name="photos" value="<%=rs1.Fields("photoID")%>">
</form>

如果没有提交表单,当用户单击复选框时,我需要为名为“photos”的复选框创建一个逗号(,)分隔列表,其中包含所有选中的值。所以这是我测试的,但它警告'未定义'!对于那些不熟悉它的人来说ASP是正确的。

function selectPhoto(id) {
... other stuff that uses id ...
var allValues = document.selectForm.photos.value;
alert(allValues);
}

但正如我上面所说,这会返回'undefined',我可以找出原因。当用户选择照片时,我只需要显示已被点击的所有照片ID的列表,例如1283,1284,1285,1286 ...

我在这里做错了什么想法?或者还有另一种方法来实现这一目标吗?

2 个答案:

答案 0 :(得分:2)

试试这个:

var allValues = [];
$('input.photos').each(function(){
  allValues.push($(this).val());
});

alert(allValues.join(','));

答案 1 :(得分:1)

我认为问题来自“document.selectForm.photos”不是输入而是数组的事实。我有一些有效的代码:

<script>
function selectPhoto(id) {
    var allCheckbox = document.selectForm.photos;
    var allValues = []
    for (var i=0; i<allCheckbox.length; i++){
        if (allCheckbox[i].checked){
            allValues.push(allCheckbox[i].value)
        }
    }
    alert( allValues.join(',') )
}
</script>

<form name="selectForm" id="selectForm">
    <input type="checkbox" onclick="selectPhoto(1)" id="checkbox_1" class="photos" name="photos" value="1">
    <input type="checkbox" onclick="selectPhoto(2)" id="checkbox_2" class="photos" name="photos" value="2">
    <input type="checkbox" onclick="selectPhoto(3)" id="checkbox_3" class="photos" name="photos" value="3">
    <input type="checkbox" onclick="selectPhoto(4)" id="checkbox_4" class="photos" name="photos" value="4">
    <input type="checkbox" onclick="selectPhoto(5)" id="checkbox_5" class="photos" name="photos" value="5">
</form>