Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.03.2013, 05:02
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Deff
for(var i=ThInd+1;i<length; i++) {
            $(treeChecks[i]).toggle(sw);
       }
Каждое поле скрывать через цикл - это сильно! Вот где сила jQuery! Чувствуется большой опыт человека, работающего с jQuery не первый день ))
Ответить с цитированием
  #12 (permalink)  
Старый 03.03.2013, 05:09
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от danik.js
Ты подрабатыавешь обфускатором? Ну ладно свой код запутывать, но ведь автор вопроса не разберется в этих всяких sw или ThInd'ах ...
Неужели нельзя дать
для меня достаточно Внятно
SW - cвитч
ThInd - This Index
Это дело вкуса писателя, и птом, что Вы ко мне цепляетесь?, - я не ТS и ответов не прошу, - просто отвечайте на Вопросы лучше и тщательнее чем я
Ответить с цитированием
  #13 (permalink)  
Старый 03.03.2013, 05:11
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

То «Вы», то «ты» - определись наконец )
Ответить с цитированием
  #14 (permalink)  
Старый 03.03.2013, 05:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 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.
Ответить с цитированием
  #15 (permalink)  
Старый 03.03.2013, 05:32
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от danik.js
Каждое поле скрывать через цикл - это сильно! Вот где сила jQuery! Чувствуется большой опыт человека, работающего с jQuery не первый день ))
А что Вы считаете что скрытие массива объектов objs.hide() - не проходит неявно через цикл?
Моя задумка под произвольное число веток - А Ваша будет требоватьпостоянного наращивания, вплоть до появления циклов
Ответить с цитированием
  #16 (permalink)  
Старый 03.03.2013, 21:37
Интересующийся
Отправить личное сообщение для jorik Посмотреть профиль Найти все сообщения от jorik
 
Регистрация: 04.06.2012
Сообщений: 24

danik.js,
немного не то, что я имел ввиду. Вариант Deff, практически то что нужно. Только маленькое уточнение, когда галочка "Не заполнять"(должна стоять по умолчанию) стоит, то для всех дочерних элементов (все что ниже) тоже должно стоять чекед, и поля напротив которых оно стоит должны быть заблокированы для ввода (blocked). Тоже самое для "Тоже не заполнять", но действовать должно на его дочерние элементы.
Конечно, хотелось бы без подключения jquery, но в данной ситуации буду благодарен за любое решение.

П.С. Таких блоков "Не заполнять", в пределах одной формы (<form>)будет несколько, и они должны быть независимы, тэга <pre> тоже не будет, добавил его просто чтоб показать иерархию элементов.

Последний раз редактировалось jorik, 03.03.2013 в 21:44.
Ответить с цитированием
  #17 (permalink)  
Старый 03.03.2013, 22:19
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 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.
Ответить с цитированием
  #18 (permalink)  
Старый 03.03.2013, 23:38
Интересующийся
Отправить личное сообщение для jorik Посмотреть профиль Найти все сообщения от jorik
 
Регистрация: 04.06.2012
Сообщений: 24

Все так, только зачем убрали возможность скрывать элементы, как было в предыдущей форме. То есть, по сути нужно объединить то что было до этого(в плане возможности прятать поля) и то что сейчас. Еще если можно прокаментить код, что б мог сам какие-то мелочи подправить если нужно будет Если не сложно, конечно.
Ответить с цитированием
  #19 (permalink)  
Старый 03.03.2013, 23:50
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Поправил

А галки менять при скрытии ?
Ответить с цитированием
  #20 (permalink)  
Старый 04.03.2013, 00:02
Интересующийся
Отправить личное сообщение для jorik Посмотреть профиль Найти все сообщения от jorik
 
Регистрация: 04.06.2012
Сообщений: 24

да. Заметил еще такой момент если снять "Не заполнять", потом установить "Тоже не заполнять" и снова поставить, снять ""Не заполнять"", то открывается форма с установленной галкой "Тоже не заполнять", но дочерние элементы не спрятаны.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое управление картами Resager Общие вопросы Javascript 0 27.09.2012 05:27
Управление таблицей Rik Events/DOM/Window 28 08.06.2012 23:51
Анимация и управление строчкой текста INI jQuery 2 31.08.2010 08:22
управление accordion menu SuperPuperLesha Общие вопросы Javascript 5 29.08.2009 13:11
передача данных между формами Yurii Общие вопросы Javascript 2 30.04.2008 20:52