我在动态制作的(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 ...
我在这里做错了什么想法?或者还有另一种方法来实现这一目标吗?
答案 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>