Перейти к содержимому


Показ/скрытие полей через JavaScript


Сообщений в теме: 319

#261 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Февраль 2016 - 15:20

Это скорее всего значит что addHandler не работает с чекбоксами. Попробуйте вариант с bind, о нем можно прочесть в этой теме.

#262 lexer92

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 01 Март 2016 - 10:06

Добрый день.
Настроил скрытие как описано на первых страницах форума, но почему-то не работает.

В список (id4880) добавил следующее:
function onchange_{$one_field.id}()
{
  display_field(4890, document.getElementById('value{$one_field.id}').value=="GPS Трекер");
  display_field(4980, document.getElementById('value{$one_field.id}').value=="SIM карта");
  }
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});


В скрывающиеся поля:
display_field({$one_field.id}, document.getElementById('value4880').value=="GPS Трекер");
display_field({$one_field.id}, document.getElementById('value4880').value=="SIM карта");

подскажите, что не так?

#263 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 01 Март 2016 - 10:39

То, что описано на первых страницах, уже частично устарело, советую просмотреть тему ближе к концу. Сегодня постараюсь переписать примеры в начале темы с учетом новых реалий.

#264 lexer92

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 01 Март 2016 - 10:49

Просмотр сообщенияCbCoder (01 Март 2016 - 10:39) писал:

То, что описано на первых страницах, уже частично устарело, советую просмотреть тему ближе к концу. Сегодня постараюсь переписать примеры в начале темы с учетом новых реалий.

Понял, спасибо

Сделал как описано в 186 посте, как я понял в этом варианте прописывать скрипт в скрывающиеся поля уже не нужно?
Добавил в список 4880 следующий код, но все равно поля 4890 и 4980 не скрываются:
$(document).ready(function(){
  onchange_{$one_field.id};
  $('#value{$one_field.id}').change(function(){ on_change{$one_field.id}(); });
});

function onchange_{$one_field.id}()
{ 
  var val4880 = document.getElementById('value4880').value;
  switch( val4880 )
  {
         case 'GPS Трекер':
         {
                display_field(4890, 1);
                display_field(4980, 0);
                break;
         }
         case 'SIM карта':
         {
                display_field(4890, 0);
                display_field(4980, 1);
                break;
         }
         case '':
         default:
         {
                display_field(4890, 0);
                display_field(4980, 0);
         }
  }
}

Сообщение отредактировал lexer92: 01 Март 2016 - 12:03


#265 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 151 сообщений
  • Пол:Мужчина

Отправлено 01 Март 2016 - 13:07

Попробуйте так

function onchange_{$one_field.id}()
{
	var val4880 = $('#value4880').val();
	switch( val4880 )
	{
		case 'GPS Трекер':
			display_field(4890, 1);
			display_field(4980, 0);
	   break;
		case 'SIM карта':
			display_field(4890, 0);
			display_field(4980, 1);
		break;
		default:
			display_field(4890, 0);
			display_field(4980, 0);
			break;
	}
}
$(function() {
	onchange_{$one_field.id}();
	$('#value{$one_field.id}').change(function() {
		onchange_{$one_field.id}();
	});
});

Поле 4880 это поле "список" или поле "связи"?

Сообщение отредактировал GoGPS: 01 Март 2016 - 13:13


#266 lexer92

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 01 Март 2016 - 13:20

Просмотр сообщенияGoGPS (01 Март 2016 - 13:07) писал:

Попробуйте так

Поле 4880 это поле "список" или поле "связи"?

Все равно не скрываются.
4880 - уже пробовал и список, и связь - без результатно


P.S. Привет коллегам по Виалону)

#267 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 151 сообщений
  • Пол:Мужчина

Отправлено 01 Март 2016 - 13:22

Спасибо за привет :)

Если это поле связи тогда вместо GPS Трекер и SIM карта нужно прописывать их ID.

И код прописываете куда? Нужно прописывать в поле JavaScript

Сообщение отредактировал GoGPS: 01 Март 2016 - 13:24


#268 lexer92

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 01 Март 2016 - 13:42

Если это поле связи со справочником, то соответственно нужно их ID со Справочника? как его узнать?
Пробовал делать и список - тоже не работало.

Конечно код прописываем в поле JS =)

Так же если не удовлетворен ни один из вариантов, то по идее поля поля 4890 и 4980 не должны отображаться?

#269 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 01 Март 2016 - 13:42

Просмотр сообщенияCbCoder (01 Март 2016 - 10:39) писал:

Сегодня постараюсь переписать примеры в начале темы с учетом новых реалий.

Обновил информацию: https://clientbase.r...findpost&p=6097

#270 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 151 сообщений
  • Пол:Мужчина

Отправлено 01 Март 2016 - 13:45

Включите в таблице поле ID

#271 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 151 сообщений
  • Пол:Мужчина

Отправлено 01 Март 2016 - 13:48

Просмотр сообщенияlexer92 (01 Март 2016 - 13:42) писал:

Так же если не удовлетворен ни один из вариантов, то по идее поля поля 4890 и 4980 не должны отображаться?

С ид полей не напутали случаем?

#272 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 01 Март 2016 - 13:52

Попробуйте для начала сделать по обновленному мной примеру, если конечно 4880 - это поле "список". Если "связь", то необходимо просто заменить текст на id связанных строк.

#273 lexer92

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 01 Март 2016 - 13:57

Для начала сделал 4880 как список, внес следующий код:
function onchange_{$one_field.id}()
{
  display_field(4890, $('#value{$one_field.id}').val()=="GPS Трекер");
  display_field(4980, $('#value{$one_field.id}').val()=="SIM карта");
}
$(document).ready(onchange_{$one_field.id});
$('#value{$one_field.id}').change(onchange_{$one_field.id});

Безрезультатно - постоянно отображаются все поля.

#274 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 01 Март 2016 - 14:02

У меня пример работает, и со списками, и с полями связи. Значит дело не в нем. Либо вы ошиблись в своем коде (с id полей или значениями), либо у вас где то в другом месте на странице ошибка JS, и она просто блокирует выполнение яваскрипта вообще. Посмотрите в консоли браузера, что там.

#275 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 151 сообщений
  • Пол:Мужчина

Отправлено 01 Март 2016 - 14:50

Код, который я привел 100% рабочий. Использую в нашей КБ.

Дело в чем то другом как сказал уважаемый CbCoder

#276 lexer92

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 01 Март 2016 - 15:29

А если бы я ошибся со значениями, то по логике поля 4890 и 4980 должны быть скрыты ?
ID значения беру со ссылки:

					
					<br />
					<p class= Сообщение отредактировал lexer92: 01 Март 2016 - 15:29


#277 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 01 Март 2016 - 15:44

Вы в консоли браузера смотрели? Более вероятной является вторая причина, первую уж на всякий случай указал (там все правильно судя по всему). Других причин пока не вижу.

Хотя, есть еще одна. Код не будет работать, если поле 4880 нередактируемое. Но вообще то говоря, изначально подразумевается, что JS код предназначен только для редактируемых полей, иначе в нем нет никакого смысла (обычное скрытие можно настроить и через правила). Надеюсь, у вас не этот случай? Иначе мы тут зря теряем время.

#278 lexer92

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 01 Март 2016 - 16:48

буду в консоли смотреть.. как понять что там что-то не так?
Поле вроде бы как редактируемое

Не обессудьте, с программированием никогда дела не имел, поэтому столько вопросов.. :(

					
					<br />
					
				</div>
				
<script type= ipb.global.registerReputation( 'rep_post_30767', { domLikeStripId: 'like_post_30767', app: 'forums', type: 'pid', typeid: '30767' }, parseInt('0') );

#279 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 01 Март 2016 - 16:57

Цитата

буду в консоли смотреть.. как понять что там что-то не так?

Надо посмотреть, нет ли там ошибок javascript. Если есть, выложите их здесь. В случае наличия ошибок код просто не будет работать (даже если ошибка не в нем)

Цитата

Поле вроде бы как редактируемое

Точно редактируемое? Т.е. когда заходите в просмотр записи -> редактировать, оно отображается и вы можете его менять? Но при изменении поля, JS не срабатывает?

#280 lexer92

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 01 Март 2016 - 17:09

Просмотр сообщенияCbCoder (01 Март 2016 - 16:57) писал:

Точно редактируемое?

Да, список могу менять

					
					<br />
					<p class= Сообщение отредактировал lexer92: 01 Март 2016 - 17:11






Количество пользователей, читающих эту тему: 5

0 пользователей, 5 гостей, 0 анонимных