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


Всплывающие окна с вопросами


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

#21 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 22 Апрель 2014 - 19:38

хм,вот даже как..ну ладно,тут у меня есть мысли как изменить,в принципе..
Даже получается))) Вообще круто)))))
И тут вроде как последний вопрос по этой теме))))
А как в итоге вывести два поля, то есть опять будет какой-то вопрос,если ответили да-то эти два поля видим и заполняем их..

					
					<br />
					<p class= Сообщение отредактировал Dinara: 22 Апрель 2014 - 20:31


#22 CbCoder

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

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

Отправлено 23 Апрель 2014 - 10:18

Не совсем понял вопроса. Вам обязательно нужно что ли отдельное окно для ввода данных в поля выводить? Пользователь же может заполнить поля на самой форме. По-моему это излишне.

#23 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 23 Апрель 2014 - 10:30

Ну вот такой запрос был..Это очень сложно сделать,да?

#24 CbCoder

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

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

Отправлено 23 Апрель 2014 - 11:02

Конечно, потому что придется полностью дублировать данные поля ввода в отдельном окне. А главное - какой в этом смысл?

#25 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 23 Апрель 2014 - 14:18

Верно говорите..Ок, тогда следующая ситуация..
function submit_func()
{
  field_value = document.getElementById('value13521').value;
  if (field_value == "Третий этап")
  {
	res = confirm("Перевести на Четвертый этап?");
	if (res == true)
	{
	  (  document.getElementById("value13601").value = 'Четвертый этап');
	}
	else
	{
	  alert("Карточка сохранена с Третьим этапом")
	}
  }
}
addHandler(document.getElementById("edit_form"), "onsubmit", submit_func);

В правилах доступа прописала, чтобы когда статус=Четвертый этап-тогда откроется поле сумма и дата оплаты для заполнения.
Здесь в коде получается если нажимают на Да-то меняется на четвертый этап. Как прописать, чтобы если статус сменился на 4ый-тогда карточка не сохранится-будет предупреждающее сообщение типа
{ alert("Заполните поля сумма и дата оплаты") }
то есть условие то будет типа
if ((document.getElementById("value13611").value=="") or (document.getElementById("value13621").value==""))
Пока не понимаю как указать что не сохранится карточка пока эти поля пустые..

Сообщение отредактировал Dinara: 23 Апрель 2014 - 14:18


#26 CbCoder

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

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

Отправлено 23 Апрель 2014 - 14:40

Я же писал вам еще вчера:

Просмотр сообщенияCbCoder (22 Апрель 2014 - 10:17) писал:

Если функция должна отменять отправку формы (например, что-то не то ввели), то в ее конце должно быть return false;

Хотя правильнее все же не "в конце" (так всегда будет отменять), а в нужном месте кода, например при нужном вам условии.

if (условие) return false;

Только имейте ввиду, что после этого участка код ниже исполняться не будет (если условие выполнено), т.к. произойдет выход из функции (т.е. возврат результата - по английски "return")

if (условие) return false;
// тут код ниже, который уже не выполнится, если условие верно и произошел return

Это конечно общеизвестно для любого программиста, но т.к. вы не проф. программист, предупреждаю.

#27 CbCoder

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

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

Отправлено 23 Апрель 2014 - 14:49

Обновил сообщение выше, проверьте если опять прочитали сразу)

#28 CbCoder

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

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

Отправлено 23 Апрель 2014 - 14:51

Опять кстати, "борщите" со скобками, здесь они лишние:

          (  document.getElementById("value13601").value = 'Четвертый этап');

          document.getElementById("value13601").value = 'Четвертый этап';


#29 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 23 Апрель 2014 - 16:03

Успела уже прочитать,как всегда))))
Получилось вроде как,только вопрос возник-а в JS как соединять условия IF?
То есть есть код
function submit_func()
{
if (document.getElementById('value13611').value=="")
	    {
	    alert("Заполните поле суммы")
	    return false;
	    }
else
	    {
		 alert("Поле суммы заполнено")
	    }
}
addHandler(document.getElementById("edit_form"), "onsubmit", submit_func); 
Но мне нужно что-то вроде
if ( (document.getElementById('value13611').value=="") and  (document.getElementById('value13613').value=="Четвертый этап"))
Но в этом случае не срабатывает(
Со скобочками кстати тоже заметила, что разницы нет есть они или нет,начала их убирать)

#30 CbCoder

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

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

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

Вместо and в JS используется &&, вместо or - ||. Это кстати и в PHP работает, некоторые так и пишут, чтобы не путаться при работе с обоими языками.

#31 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 23 Апрель 2014 - 20:18

Ах,вон оно что..ну да,удобнее тогда везде использовать,чтобы не забывать...
Сейчас работающие коды формата
function submit_func()
{
if (document.getElementById('value13521').value=="Третий этап")
  {
    res = confirm("Перевести на Четвертый этап?");
    if (res == true)
    {
	    document.getElementById("value13601").value = "Четвертый этап";
	    document.getElementById('value13521').value="Четвертый этап";
	 
    }
    else
    {
	  alert("Карточка сохранена с Третьим этапом")
    }
  }   
}
addHandler(document.getElementById("edit_form"), "onsubmit", submit_func);
и уже проверка на заполнение полей при четвертом этапе
function submit_func()
{
if (((document.getElementById('value13621').value=="") && (document.getElementById('value13601').value=="Четвертый этап"))
|| ((document.getElementById('value13611').value=="") && (document.getElementById('value13601').value=="Четвертый этап")))
	    {
	    alert("Заполните поля даты и суммы")
	    return false;
	    }
else
	    {
		 alert("Заполнено")
	    }
}
addHandler(document.getElementById("edit_form"), "onsubmit", submit_func);	 
	   
Только получается так, что поле Статус может меняться с 1 на 2,потом на 3 и сразу на 4ый (там будут постоянные вопросы при сохранении) и вот когда ставится четвертый этап-поля Сумма (value13621) и Дата оплаты (value13611) должны появиться и идет проверка второго кода на их заполнение.
ПРописывать то их нужно примерно такого формата
if (document.getElementById('value7').value=="Регистрация, настройка ПО") display_field({$one_field.id}, 1);
А вот куда ее вставить,и при изменении поля или при сохранении-пока не могу придумать..(

#32 CbCoder

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

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

Отправлено 24 Апрель 2014 - 11:40

Я так понял, у вас сейчас так: при выборе третьего этапа и нажатии на Сохранить ставится вопрос: "перевести на четвертый этап?", после чего карточка пересохраняется и появляются поля даты и суммы, в соответствии с правилом? Чем такой вариант перестал устраивать?

#33 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 24 Апрель 2014 - 11:44

Да, изначально так было. Просто если перешли на 4 этап-они не могут сохранить пока не заполнили эти 2 поля..В этом и заключается теперь проблема. ибо если делать после появления 4 этапа-они смогут сохранить и просто выйти и не заполнить эти поля

Сообщение отредактировал Dinara: 24 Апрель 2014 - 11:58


#34 CbCoder

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

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

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

Почему проблема, не совсем понял? Разве так и не задумано - "если перешли на 4 этап-они не могут сохранить пока не заполнили эти 2 поля"?

#35 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 24 Апрель 2014 - 13:16

Смотрите,переходят они на 4 этап.Эти поля до 4 этапа заполнять нельзя,то есть они должны открыться только когда Статус изменится на 4 этап, а до этого не должны быть видимы.
Я же там выше указала 2 кода, получается в первом нужно прописать отображение этих полей когда сменили на 4 этап?Сработает ли оно там?

#36 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 24 Апрель 2014 - 13:49

Хотя с другой стороны можно же поля не закрывать,чтобы не мучиться с кодом просто..Обнулять если заполнили до того как статус был 4м..

Сообщение отредактировал Dinara: 24 Апрель 2014 - 13:49


#37 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 24 Апрель 2014 - 14:07

Спасибо за такое громадное терпение) Таки сделала я))
Вдруг кому понадобится такое-копирую сюда коды
function submit_func()
{
  if (document.getElementById('value13521').value=="Нулевой")
  {
    res = confirm("Перевести на первый этап?");
    if (res == true)
    {
	  (  document.getElementById("value13601").value = 'Первый этап');
  { res1 = confirm("Перевести на второй этап?");
   if (res1 == true)
   {
   (  document.getElementById("value13601").value = 'Второй этап');
    { res2 = confirm("Перевести на третий этап?");
	 if (res2 == true)
	 {
	 (  document.getElementById("value13601").value = 'Третий этап');
	   { res3 = confirm("Перевести на четвертый этап?");
	    if (res3 == true)
	    {
	    document.getElementById("value13601").value = "Четвертый этап";
			    document.getElementById('value13521').value="Четвертый этап";
	    }
	    else
		 {
		 alert("Карточка сохранена с третьим этапом")
		 }
	  
	   }
	 }
	 else
	 {
	 alert("Карточка сохранена с вторым этапом")
	 }
    }
  
   }
    else
   {
  alert("Карточка сохранена с первым этапом")
   }
 
 
  }
    }
    else
    {
	  alert("Карточка сохранена с нулевым этапом")
    }
  } 
 
 
else   if (document.getElementById('value13521').value=="Первый этап")
  {
    res = confirm("Перевести на Второй этап?");
    if (res == true)
    {
	  (  document.getElementById("value13601").value = 'Второй этап');
  { res1 = confirm("Перевести на третий этап?");
   if (res1 == true)
   {
   (  document.getElementById("value13601").value = 'Третий этап');
    { res2 = confirm("Перевести на четвертый этап?");
	 if (res2 == true)
	 {
	 document.getElementById("value13601").value = "Четвертый этап";
			 document.getElementById('value13521').value="Четвертый этап";
	 }
	 else
	 {
	 alert("Карточка сохранена с третьим этапом")
	 }
    }
  
   }
    else
   {
  alert("Карточка сохранена с вторым этапом")
   }
 
 
  }
    }
    else
    {
	  alert("Карточка сохранена с первым этапом")
    }
  }  
 
  else if (document.getElementById('value13521').value=="Второй этап")
  {
    res = confirm("Перевести на Третий этап?");
    if (res == true)
    {
	  (  document.getElementById("value13601").value = 'Третий этап');
  { res1 = confirm("Перевести на Четвертый этап?");
   if (res1 == true)
   {
   document.getElementById("value13601").value = "Четвертый этап";
		   document.getElementById('value13521').value="Четвертый этап";
   }
    else
   {
  alert("Карточка сохранена с Третьим этапом")
   }
 
 
  }
    }
    else
    {
	  alert("Карточка сохранена с Вторым этапом")
    }
  } 
 
  else if (document.getElementById('value13521').value=="Третий этап")
  {
    res = confirm("Перевести на Четвертый этап?");
    if (res == true)
    {
	    document.getElementById("value13601").value = "Четвертый этап";
	    document.getElementById('value13521').value="Четвертый этап";
	 
    }
    else
    {
	  alert("Карточка сохранена с Третьим этапом")
    }
  }   
 
 
 
}
addHandler(document.getElementById("edit_form"), "onsubmit", submit_func);

По 4 этапу (если на 4-проверка заполненности полей суммы и даты оплаты)
function submit_func()
{
if (((document.getElementById('value13611').value=="") && (document.getElementById('value13601').value=="Четвертый этап"))
|| ((document.getElementById('value13621').value=="") && (document.getElementById('value13601').value=="Четвертый этап")))
	    {
	    alert("Заполните поля даты и суммы")
	    return false;
	    }
}
addHandler(document.getElementById("edit_form"), "onsubmit", submit_func);	 
	   

И вычисление которое либо обнуляет поля, либо копирует в контрагента (условие для срабатывания-при изменения поля суммы или даты оплаты)
if ($line['Статус']=="Четвертый этап")
{
$data['Сумма'] = $line['Сумма'];
$data['Дата оплаты'] = $line['Дата оплаты'];
update_query($data,"Контрагенты","id='{$line['Компания']['ID']}'");
}
else
{
$line['Сумма'] = "";
$line['Дата оплаты'] = "";
}


#38 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 28 Апрель 2014 - 11:46

Ну вот, опять вопрос..проверяю под теми сотрудниками, у кого группа доступа=Менеджеры, а они эти предупреждающие сообщения не видят(

#39 CbCoder

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

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

Отправлено 28 Апрель 2014 - 12:12

Значит, какие-либо из полей недоступны для редактирования.

#40 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 28 Апрель 2014 - 12:27

Вот тебе на((а надо чтобы указанные поля в коде были доступны?!...это никак нельзя допустить,они из контрагента переносятся(





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

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