Фильтр с помощью checkbox-ов...
Здравствуйте!
Помогите с фильтром, задача состоит такова: нужно получить значение по выбранным категориям, категории выбирать можно с помощью чекбоксов, допустим их есть 3, а так же 4-я "все категории". Основная сложность в том, что: 1. Когда выбрано 3-и категории, должны пропасть галочки на них и появится на "все категории". (реализовано) 2. Когда выбрано "все категории" и человек выбрал одну из 3-ех, галочка пропадает с "все категории", и стоит только на выбранной(ных). (реализовано, но из-за этого куска не работает пункт 3) 3. ПРОБЛЕМА! Когда выбрано "все категории" остальные галочки должны пропасть! вот кусок скрипта
function union_chbox_orientations() {
values_orientations='';
test='';
var chbox_activ_count = $( "input:checked" ).length - 1;
for (i = 0; i < 4; i++) {
if (document.getElementById('box_orientation'+i).checked) {
values_orientations = values_orientations+document.getElementById('box_orientation'+i).value+'&';
}
//если выбраны все, убрать галочку с всех и поставить на "все файлы"
if (chbox_activ_count == 3) {
values_orientations = document.getElementById('box_orientation'+0).value+'&';
document.getElementById('box_orientation'+0).checked = true;
for (i = 1; i < 4; i++) {
document.getElementById('box_orientation'+i).checked = false;
}
}
}
for (i = 1; i < 4; i++) { // если выбрано "все ориентации" и нажата определённая, то убирает все ориентации
if (document.getElementById('box_orientation'+i).checked && document.getElementById('box_orientation'+0).checked == true) {
document.getElementById('box_orientation'+0).checked = false;
values_orientations = document.getElementById('box_orientation'+i).value+'&';
}
}
//alert (values_orientations);
return (true);
}
Пример задачи взят из поиска http://www.istockphoto.com/. Подскажите как это можно реализовать... Заранее благодарен :thanks: |
len-in,
Выдайте код для необходимых HTML элементов |
<html>
<head>
<title>page</title>
<script type="text/javascript">
function union_chbox_orientations() {
values_orientations='';
test='';
for (i = 0; i < 4; i++) {
if (document.getElementById('box_orientation'+i).checked) {
values_orientations = values_orientations+document.getElementById('box_orientation'+i).value+'&';
}
//если выбраны все, убрать галочку с всех и поставить на "все файлы"
if (document.getElementById('box_orientation'+1).checked && document.getElementById('box_orientation'+2).checked && document.getElementById('box_orientation'+3).checked) {
values_orientations = document.getElementById('box_orientation'+0).value+'&';
document.getElementById('box_orientation'+0).checked = true;
for (i = 1; i < 4; i++) {
document.getElementById('box_orientation'+i).checked = false;
}
}
}
for (i = 1; i < 4; i++) { // если выбрано "все ориентации" и нажата определённая, то убирает все ориентации
if (document.getElementById('box_orientation'+i).checked && document.getElementById('box_orientation'+0).checked == true) {
document.getElementById('box_orientation'+0).checked = false;
values_orientations = document.getElementById('box_orientation'+i).value+'&';
}
}
return (true);
}
</script>
</head>
<body>
<div class="conteiner_orientations">
<p>Orientation:</p>
<input type='checkbox' name='name' value='all orientations' id='box_orientation0' onClick='return union_chbox_orientations()'><img src='/'/>
<label for='box_orientation0'>all orientations</label><br>
<input type='checkbox' name='name' value='vertical' id='box_orientation1' onClick='return union_chbox_orientations()'><img src='/'/>
<label for='box_orientation1'>vertical</label><br>
<input type='checkbox' name='name' value='horizontal' id='box_orientation2' onClick='return union_chbox_orientations()'><img src='/'/>
<label for='box_orientation2'>horizontal</label><br>
<input type='checkbox' name='name' value='square' id='box_orientation3' onClick='return union_chbox_orientations()'><img src='/'/>
<label for='box_orientation3'>square</label><br>
</div>
</body>
</html>
|
len-in,
Если чел выбрал две из категорий (не all) - что должно быть ? (может оставляем последнюю?( или обе ?) |
len-in,
Вариант...
<!DOCTYPE HTML>
<html>
<head>
<title>page</title>
<script type="text/javascript">
var test = 0 ;
function union_chbox_orientations(a) {
"box_orientation0" != a.id && (a.checked ? test++ : test--);
if ("box_orientation0" == a.id && a.checked || 3 == test) {
for (i = 0; 4 > i; i++) document.getElementById("box_orientation" + i).checked = 0 < i ? !1 : !0;
test = 0
} else document.getElementById("box_orientation0").checked = !1;
return !0
};
</script>
</head>
<body>
<div class="conteiner_orientations">
<p>Orientation:</p>
<input type='checkbox' name='name' value='all orientations' id='box_orientation0' onClick='return union_chbox_orientations(this)'><img src='/'/>
<label for='box_orientation0'>all orientations</label><br>
<input type='checkbox' name='name' value='vertical' id='box_orientation1' onClick='return union_chbox_orientations(this)'><img src='/'/>
<label for='box_orientation1'>vertical</label><br>
<input type='checkbox' name='name' value='horizontal' id='box_orientation2' onClick='return union_chbox_orientations(this)'><img src='/'/>
<label for='box_orientation2'>horizontal</label><br>
<input type='checkbox' name='name' value='square' id='box_orientation3' onClick='return union_chbox_orientations(this)'><img src='/'/>
<label for='box_orientation3'>square</label><br>
</div>
</body>
</html>
|
Вот, то что нужно! Огромное спасибо.
|
<html>
<head>
<title>page</title>
<script type="text/javascript">
var arrCheck=[0,0,0,0];
function union_chbox_orientations(a) {
var i= +a.id.replace(/^\D*/,'');
arrCheck[i]=+1*(a.checked==true);
if(!arrCheck[i])return false;
var testKey ="" + arrCheck.join(''); //alert(testKey)
if(i==0)arrCheck=[1,0,0,0];
if(i!=0)arrCheck[0]=0;
if(testKey=='0111'||testKey=='1111')arrCheck=[1,0,0,0];
for (i = 0; i < arrCheck.length; i++) {
document.getElementById('box_orientation'+i).checked=(arrCheck[i]==1);
}
return true;
}
</script>
</head>
<body>
<div class="conteiner_orientations">
<p>Orientation:</p>
<input type='checkbox' name='name' value='all orientations' id='box_orientation0' onclick='union_chbox_orientations(this)'><img src='/'/>
<label for='box_orientation0'>all orientations</label><br>
<input type='checkbox' name='name' value='vertical' id='box_orientation1' onclick='union_chbox_orientations(this)'><img src='/'/>
<label for='box_orientation1'>vertical</label><br>
<input type='checkbox' name='name' value='horizontal' id='box_orientation2' onclick='union_chbox_orientations(this)'><img src='/'/>
<label for='box_orientation2'>horizontal</label><br>
<input type='checkbox' name='name' value='square' id='box_orientation3' onclick='union_chbox_orientations(this)'><img src='/'/>
<label for='box_orientation3'>square</label><br>
</div>
</body>
</html>
Пытаюсь упрозрачнить кодирование |
| Часовой пояс GMT +3, время: 02:48. |