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


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


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

#181 GoGPS

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

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

Отправлено 04 Март 2015 - 11:18

А когда планируется выход 3.0 версии, хотя бы очень приблизительно?

И переход с 2.Х.Х будет?

#182 CbCoder

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

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

Отправлено 04 Март 2015 - 11:31

Очень приблизительно - в этом году, но т.к. код создается практически с нуля, то вероятно вначале будет бета с ограниченным функционалом. По той же причине, автоперехода с 2.x.x не будет, только в ручном или полуручном режиме, скорее всего (примерно как у 1С с восьмеркой). Но говорить что-то конкретное пока рано, это все "намерения" еще, толком и не приступали даже.

#183 GoGPS

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

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

Отправлено 04 Март 2015 - 11:39

Понял. Может рассмотрите вариант все же какого то упрощенного JS конструктора скрытия показа полей хотя бы в рамках 2.Х.Х версии?

Я думаю вам будут оооочень многие благодарны :)

#184 CbCoder

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

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

Отправлено 04 Март 2015 - 11:40

Подумаем. Но пока это не приоритет у нас.

#185 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 04 Март 2015 - 12:36

Приоритет у вас 3.0, но к ней еще толком не приступали. Потому 2.х усовершенствовать лень. У мастеров прокрастинации это называется "самоотмазкой" :-)
Вы бы сначала 2.х довели до ума в плане сервисов, а то пользователям самим приходится изучать языки программирования. Хорошо хоть форум есть и какая-никакая помощь ваших программистов. Но все равно это лучше чем ничего.

#186 Tatiana

    Участник

  • Пользователи
  • PipPip
  • 26 сообщений
  • Пол:Женщина
  • Город:Москва

Отправлено 12 Апрель 2015 - 18:50

Есть ТРИ ПОЛЯ СВЯЗЬ 4661, 4771, 4751 (поля 4771 и 4751 были сразу скрыты при добавлении записи, при редактированы открыты, если заполнены были ранее)
Надо чтобы:
при выборе одного значения в 4661 открывалось для заполнения поле 4771.
при выборе другого значения в 4661 открывалось для заполнения поле 4751
при выборе ещё оного значения в 4661 ничего не открывалось из этих полей для заполнения.

У меня не получается к сожалению сделать самой, перепробовала коды которые в этой теме и в других похожих написаны и подставляла свои значения id. Помогите

Заранее спасибо за помощь и ответы!

Сообщение отредактировал Tatiana: 12 Апрель 2015 - 18:52


#187 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 12 Апрель 2015 - 22:22

Код поместите в вычисление JS для поля 4661
$(document).ready(function(){
  onchange_{$one_field.id};
  $('#value{$one_field.id}').change(function(){ on_change{$one_field.id}(); });
});

function onchange_{$one_field.id}()
{ // Функция по событию "изменение поля"
  var val4661 = document.getElementById('value4661').value;
  switch( val4661 )
  {
	 case value_1: // value_1 - значение 1 из поля 4661
	 {
		display_field(4771, 1);
		display_field(4751, 0);
		break;
	 }
	 case value_2: // value_2 - значение 2 из поля 4661
	 {
		display_field(4771, 0);
		display_field(4751, 1);
		break;
	 }
	 case value_3: // value_3 - значение 3 из поля 4661
	 default:  // это же условие отрабатывает по умолчанию, т.е. если значение в поле 4661 не совпадет ни с одним из выше перечисленных
	 {
		display_field(4771, 0);
		display_field(4751, 0);
	 }
  }
}

Сообщение отредактировал andibrag: 25 Апрель 2015 - 20:13

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#188 Tatiana

    Участник

  • Пользователи
  • PipPip
  • 26 сообщений
  • Пол:Женщина
  • Город:Москва

Отправлено 13 Апрель 2015 - 00:07

свои значения (текст) мне подставлять вместо value_1, value_2, value_3 ? не получается

#189 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 13 Апрель 2015 - 11:39

Просмотр сообщенияTatiana (13 Апрель 2015 - 00:07) писал:

свои значения (текст) мне подставлять вместо value_1, value_2, value_3 ? не получается
Текст подставлять в кавычках - 'value_1'.
Исправил код. В прошлый раз зацепило форматирование строк, сейчас убрал этот мусор.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#190 serg63rus

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

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

Отправлено 25 Апрель 2015 - 17:26

Всем здравствуйте!
Есть вопрос - кто в силах подсказать - буду рад)

Есть следующий код:
function onchange_{$one_field.id}()
{
//Объект
	    display_field(13330, document.getElementById('value{$one_field.id}').value==spis_object || document.getElementById('value{$one_field.id}').value==spis_sverk);
//Контракт / Договор
	    display_field(12710, document.getElementById('value{$one_field.id}').value==spis_bg || document.getElementById('value{$one_field.id}').value==post_kont);
//Договор субподряда
	    display_field(12340, document.getElementById('value{$one_field.id}').value==spis_subp || document.getElementById('value{$one_field.id}').value==post_subp);
//Договор подряда
	    display_field(14720, document.getElementById('value{$one_field.id}').value==spis_podr);
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});
$(onchange_{$one_field.id});

Выше этого кода присвоены значения переменным. При выборе нужные поля скрываются, вроде все работает. Но при первоначальной загрузке все поля, которые здесь описаны (которые по сути должны быть скрыты) - открыты. И скрываются сразу все только при изменении поля выбора... Здесь все перечитал, понял одно - код //$(onchange_{$one_field.id});// в конце вызывает данную функцию и поля должны автоматически скрыться... Что может быть? Где искать косяк?

#191 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 25 Апрель 2015 - 20:22

Просмотр сообщенияserg63rus (25 Апрель 2015 - 17:26) писал:

Что может быть? Где искать косяк?
У Вас onchange не отрабатывает, потому что неправильно вызывается. Оставьте просто
onchange_{$one_field.id};
Возможно также, что поле, в которое помещен JS, расположено на странице выше, чем поля, которые участвуют в коде. Т.е. код JS начинает работу до того, как поля появились, в результате возникает ошибка. Чтобы это избежать используйте вариант, обозначенный выше:
$(document).ready(function(){
  onchange_{$one_field.id};
  $('#value{$one_field.id}').change(function(){ on_change{$one_field.id}(); });
});
В этом случае JS запуститься только после формирования всей страницы.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#192 CbCoder

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

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

Отправлено 26 Апрель 2015 - 12:31

Цитата

Чтобы это избежать используйте вариант, обозначенный выше:

Так у него как раз и используется этот вариант, только в альтернативном сокращенном виде:

$(onchange_{$one_field.id});

А вы его видимо спутали с "неправильным вызовом onchange":

Цитата

У Вас onchange не отрабатывает, потому что неправильно вызывается

Так что тут скорее всего верно и именно так как вы советуете. Косяк где-то в другом месте, но где именно, не вижу. Смущает конечно сравнение с неопределенными переменными:

display_field(13330, document.getElementById('value{$one_field.id}').value==spis_object

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

#193 serg63rus

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

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

Отправлено 26 Апрель 2015 - 19:32


andibrag, CbCoder, спасибо за подсказки, обязательно попробую..




Но скорее всего у меня косяк с самой КБ, потому как в итоге к вечеру вообще код JavaScript перестал выполняться (причем любой)...




Как выяснил - произошло это после того, как я решил скопировать одну категорию (создать копию) путем копирования именно категории с таблицами в ней - в итоге мне выдало какую-то ошибку, и я уже дальше копировал вручную каждую таблицу...




Но при первоначальном копировании всей категории создалась копия-категория и одна таблица в ней со служебными полями. При удалении данной таблицы также вываливалась ошибка, в общем удалить ее не представлялось возможным... Пришлось удалять через записи в БД. В итоге все умерло... Сейчас с нуля накидываю и копирую с еще кое-как живой старой КБ.. Кароче гемор на всю ночь... Потом отпишу что в итоге было - код кривой или КБ тупила.


#194 serg63rus

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

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

Отправлено 26 Апрель 2015 - 22:09

В общем попробовал в другом месте - такая же беда.

Вот код:
function onchange_{$one_field.id}()
{
var temp_switch = document.getElementById('value{$one_field.id}').value; //объявляем переменную и присваиваем ей значение поля выбора (при изменении которого необходимо обнулить форму)
document.getElementById('edit_form').reset(); //обнуляем форму
document.getElementById('value{$one_field.id}').value = temp_switch; //обратно присваиваем значение полю выбора (т.к. при обнулении формы данное поле также обнуляется)
display_fgroup(150, document.getElementById('value{$one_field.id}').value=="Юридическое лицо");
display_fgroup(190, document.getElementById('value{$one_field.id}').value=="Физическое лицо");
	    display_field(4350, document.getElementById('value{$one_field.id}').value=="Юридическое лицо");
	    display_field(4400, document.getElementById('value{$one_field.id}').value=="Юридическое лицо");
	    display_field(4340, document.getElementById('value{$one_field.id}').value=="Физическое лицо");
	    display_field(4390, document.getElementById('value{$one_field.id}').value=="Физическое лицо");
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});
$(onchange_{$one_field.id});
Скрытие происходит только после смены значения. При загрузке страницы видны все поля...(((

#195 serg63rus

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

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

Отправлено 26 Апрель 2015 - 22:20

Нашел в чем беда - в данной форме есть еще поле-список, у которого также есть javascript код на изменение:
//function onchange_hideusrbut1()
//{
//document.getElementById('logi').style.display = 'none';
//
//  if (document.getElementById("value{$one_field.id}").value == "Редактирование")
//					    {
//								  document.getElementById('user_button_div_100').style.display = '';
//					    }
//  else
//					    {
//								  document.getElementById('user_button_div_100').style.display = 'none';
//					    }
//
//}
//
//{literal}
//$(document).ready(function() {
//  onchange_hideusrbut1();
//});
//{/literal}
//addHandler(document.getElementById("value{$one_field.id}"), "onchange", onchange_hideusrbut1);
Так вот если его отключить (как выше - закомментил все) - то первоначальный код на скрытие нужных полей работает с самого начала...

От чего такое может быть?

#196 serg63rus

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

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

Отправлено 26 Апрель 2015 - 22:23

Кажется начинаю понимать - при добавлении поле-список, на которое ссылается второй код отсутствует (не показывается - оно мне не нужно для прямого редактирования), видимо из-за условия if, которое получается ссылается на несуществующий элемент, получается ошибка и в итоге все криво работает...

#197 serg63rus

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

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

Отправлено 26 Апрель 2015 - 22:36

Кароче проблема решена! Прописал дополнительное условие на проверку наличия элемента, и теперь все как надо)))

#198 serg63rus

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

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

Отправлено 26 Апрель 2015 - 23:00

Ппц!!! Не все так просто! Теперь код скрытия кнопки доп действий не работает!... это жесть какаято..

#199 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 26 Апрель 2015 - 23:09

Просмотр сообщенияCbCoder (26 Апрель 2015 - 12:31) писал:

Так у него как раз и используется этот вариант, только в альтернативном сокращенном виде:
$(onchange_{$one_field.id});
Век живи, век учись. Не знал, что можно все сократить до одной строки...

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#200 serg63rus

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

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

Отправлено 26 Апрель 2015 - 23:31

В общем в коде страницы отсутствуют элементы с id = value4900 (что является value{$one_field.id}) - я хз вообще как так?? В настройках доступа если делаешь доступ на редактирование этого поля - то тогда в хроме работает, в инет-эксплорере нет! Кароче видимо КБ последняя жутко сырая... Попробую откатится...





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

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