#javascript #jquery #checkbox
#javascript #jquery #флажок
Вопрос:
У меня много флажков в динамически создаваемой (ASP) фотогалерее. Каждый флажок имеет имя «фотографии» и содержит идентификатор фотографии в значении, например:
<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>
Без отправки формы, когда пользователь нажимает на флажок, мне нужно создать разделенный запятыми (,) список всех отмеченных значений для флажка с именем «фотографии». Итак, это то, что я тестировал, но оно предупреждает «не определено»! ASP правильный, для тех, кто с ним не знаком.
function selectPhoto(id) {
... other stuff that uses id ...
var allValues = document.selectForm.photos.value;
alert(allValues);
}
Но, как я уже сказал выше, это возвращает ‘undefined’, и я могу понять, почему. Когда пользователь выбирает фотографию, мне просто нужно отобразить список всех идентификаторов фотографий, на которые были нажаты, например, 1283,1284,1285,1286…
Есть идеи, что я здесь делаю не так? Или есть другой способ добиться этого?
Комментарии:
1. Вы поместили тег формы внутри цикла или только входной тег?
2. Просто входной тег. Я добавил форму для представления этого вопроса 🙂
Ответ №1:
Попробуйте это:
var allValues = [];
$('input.photos').each(function(){
allValues.push($(this).val());
});
alert(allValues.join(','));
Комментарии:
1. Похоже, это то, что мне нужно, но, к сожалению, это не сработало. Хотел бы я знать больше, чтобы я мог отладить это сам. Есть идеи?
2. На самом деле, я думаю, что моя проблема заключается в другом — это все еще может работать :/
3. Я ценю ваше предложение, но я не смог заставить его выдавать правильные результаты. Во-первых, он вернул все значения флажков для «фотографий», но НЕ отмеченные. Поэтому я изменил ‘input.photos’ на ‘input.photos: проверено’, и это сработало, но это противоречило другим флажкам на моей странице, которые имеют класс ‘.photos’. Действительно странно. К сожалению, я попробовал другой ответ, и он сработал, но все равно хотел бы поблагодарить вас, потому что это было совсем недалеко
Ответ №2:
Я считаю, что проблема связана с тем фактом, что « 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>