03.03.2013, 05:02
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от Deff
|
for(var i=ThInd+1;i<length; i++) {
$(treeChecks[i]).toggle(sw);
}
|
Каждое поле скрывать через цикл - это сильно! Вот где сила jQuery! Чувствуется большой опыт человека, работающего с jQuery не первый день ))
|
|
03.03.2013, 05:09
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от danik.js
|
Ты подрабатыавешь обфускатором? Ну ладно свой код запутывать, но ведь автор вопроса не разберется в этих всяких sw или ThInd'ах ...
Неужели нельзя дать
|
для меня достаточно Внятно
SW - cвитч
ThInd - This Index
Это дело вкуса писателя, и птом, что Вы ко мне цепляетесь?, - я не ТS и ответов не прошу, - просто отвечайте на Вопросы лучше и тщательнее чем я
|
|
03.03.2013, 05:11
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
То «Вы», то «ты» - определись наконец )
|
|
03.03.2013, 05:13
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от danik.js
|
for(var i=ThInd+1;i<length; i++) {
$(treeChecks[i]).toggle(sw);
}
|
Блин - я писал для дерева, если моё чутьё подвело, о дальнейшеей продолжении задачи, ну имхо это моя промашка не нужно мерить других по себе, у меня мысли в своём проекте и тутошние задачи иногда подталкивают.
Сообщение от danik.js
|
То «Вы», то «ты» - определись наконец )
|
уважительно начинаю называть когда готов заехать в моську
Последний раз редактировалось Deff, 03.03.2013 в 05:25.
|
|
03.03.2013, 05:32
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от danik.js
|
Каждое поле скрывать через цикл - это сильно! Вот где сила jQuery! Чувствуется большой опыт человека, работающего с jQuery не первый день ))
|
А что Вы считаете что скрытие массива объектов objs.hide() - не проходит неявно через цикл?
Моя задумка под произвольное число веток - А Ваша будет требоватьпостоянного наращивания, вплоть до появления циклов
|
|
03.03.2013, 21:37
|
Интересующийся
|
|
Регистрация: 04.06.2012
Сообщений: 24
|
|
danik.js,
немного не то, что я имел ввиду. Вариант Deff, практически то что нужно. Только маленькое уточнение, когда галочка "Не заполнять"(должна стоять по умолчанию) стоит, то для всех дочерних элементов (все что ниже) тоже должно стоять чекед, и поля напротив которых оно стоит должны быть заблокированы для ввода (blocked). Тоже самое для "Тоже не заполнять", но действовать должно на его дочерние элементы.
Конечно, хотелось бы без подключения jquery, но в данной ситуации буду благодарен за любое решение.
П.С. Таких блоков "Не заполнять", в пределах одной формы (<form>)будет несколько, и они должны быть независимы, тэга <pre> тоже не будет, добавил его просто чтоб показать иерархию элементов.
Последний раз редактировалось jorik, 03.03.2013 в 21:44.
|
|
03.03.2013, 22:19
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<html>
<head>
<title>Тест form</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$.fn.form_menu = function() {
var form = this;
var treeChecks = $('span.tree',form); //массив всех span class='tree' в данной form
var length = treeChecks.length; //Длина массива
function setAttrTree(sw,ThInd){
for(var i=ThInd+1;i<length; i++) { //Перебираем все индексы от следующего за текущим, до конца
var el = $(treeChecks[i]);
el.find('input').attr('disabled',sw);
//el.toggle(!sw); //Показ - Скрытие
if(el.hasClass('all')&&!sw) {sw = el.find('input[type="checkbox"]')[0].checked;}
var str='';if(sw)str ='No Access';
el.find('input[type="text"]').attr('placeholder',str);
if(!sw&&!el.hasClass('all')) {swTH = el.find('input[type="checkbox"]')[0].checked;
var str='';if(swTH)str ='No Access';
el.find('input[type="text"]').attr('disabled',swTH).attr('placeholder',str);
}
}
}
// Первоначальная установка;
var check=$('span.tree.all input[type="checkbox"]:first',form)
setAttrTree(check,0);
$('span.tree.all input[type="checkbox"]',form) .change(function(){ //Cрабатывание onchange для input sel_all
var sw = this.checked;
var ThInd = treeChecks.index($(this).parent()[0]); //Текущий индех данного span в массиве
setAttrTree(sw,ThInd)
});
$('span.tree:not(.all) input[type="checkbox"]',form) .change(function(){//Cрабатывание onchange для любых, кроме input sel_all
var sw = !this.checked;
var str='';if(!sw)str ='No Access';
$(this).parent().find('input[type="text"]').attr('disabled',!sw).attr('placeholder',str);
});
}
</script>
</head>
<body>
<form id='formN1' name='form' action='' method='post'>
<pre>
<span class='tree all'>Не заполнять <input checked type='checkbox' name='sel_all'></span>
<span class='tree'>Вариант 1 <input id='items_1' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 2 <input id='items_2' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 3 <input id='items_3' type='checkbox'> <input type='text'></span>
<span class='tree all'>Тоже не заполнять <input type='checkbox' name='sel_all'></span>
<span class='tree'>Вариант 1.1 <input id='items_1' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 2.1 <input id='items_2' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 3.1 <input id='items_3' type='checkbox'> <input type='text'></span>
<span class='tree all'>И это тоже не заполнять <input type='checkbox' name='sel_all'></span>
<span class='tree'>Вариант 1.1 <input id='items_1' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 2.1 <input id='items_2' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 3.1 <input id='items_3' type='checkbox'> <input type='text'></span>
</pre>
</form>
<form id='formN2' name='form' action='' method='post'>
<pre>
<span class='tree all'>Не заполнять <input checked type='checkbox' name='sel_all'></span>
<span class='tree'>Вариант 1 <input id='items_1' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 2 <input checked id='items_2' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 3 <input id='items_3' type='checkbox'> <input type='text'></span>
<span class='tree all'>Тоже не заполнять <input checked type='checkbox' name='sel_all'></span>
<span class='tree'>Вариант 1.1 <input id='items_1' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 2.1 <input checked id='items_2' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 3.1 <input id='items_3' type='checkbox'> <input type='text'></span>
<span class='tree all'>И это тоже не заполнять <input type='checkbox' name='sel_all'></span>
<span class='tree'>Вариант 1.1 <input id='items_1' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 2.1 <input checked id='items_2' type='checkbox'> <input type='text'></span>
<span class='tree'>Вариант 3.1 <input id='items_3' type='checkbox'> <input type='text'></span>
</pre>
</form>
<script>
$(document).ready(function(){
$('#formN1').form_menu();
$('#formN2').form_menu();
});
</script>
</body>
</html>
Последний раз редактировалось Deff, 04.03.2013 в 17:15.
|
|
03.03.2013, 23:38
|
Интересующийся
|
|
Регистрация: 04.06.2012
Сообщений: 24
|
|
Все так, только зачем убрали возможность скрывать элементы, как было в предыдущей форме. То есть, по сути нужно объединить то что было до этого(в плане возможности прятать поля) и то что сейчас. Еще если можно прокаментить код, что б мог сам какие-то мелочи подправить если нужно будет Если не сложно, конечно.
|
|
03.03.2013, 23:50
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Поправил
А галки менять при скрытии ?
|
|
04.03.2013, 00:02
|
Интересующийся
|
|
Регистрация: 04.06.2012
Сообщений: 24
|
|
да. Заметил еще такой момент если снять "Не заполнять", потом установить "Тоже не заполнять" и снова поставить, снять ""Не заполнять"", то открывается форма с установленной галкой "Тоже не заполнять", но дочерние элементы не спрятаны.
|
|
|
|